まず、HTMLフォームからサーバーに保存せずにファイルをS3に直接アップロードします。私はBoto3とFlaskを使用しています。フラスコとHTMLコードは以下に掲載されています。私はS3への接続をテストしたので、私のHTMLフォームに問題があるはずです。エラーは「ファイル名は文字列でなければなりません」と表示されます。ご協力いただきありがとうございます。FlaskとBoto3を使ってHTMLフォームからファイルをアップロードする
フラスコ:
.route('/upload', methods=['GET', 'POST'])
@login_required
def upload():
try:
latestfile = request.form.get('filetoupload')
conn = boto3.client('s3', region_name="eu-west-1", endpoint_url="example.com", aws_access_key_id='the access key here', aws_secret_access_key='the secret key here',)
conn.create_bucket(Bucket="mytestbucket22")
bucket_name = "mytestbucket22"
conn.upload_file(latestfile, bucket_name, latestfile)
return render_template('dashboard.html', name=current_user.username, sumsg="Upload done!")
except Exception as ermsg:
print(ermsg)
return render_template('dashboard.html', name=current_user.username, ermsg=ermsg)
HTML:
<form action="./upload" method="post" enctype="multipart/form-data">
<input name="filetoupload" type="file">
<button type="submit" class="buttonformatting" onclick="showImage();">Download</button></a>
</form>