基本的なファイルアップロードフォームのバックエンドFlaskコードは次のとおりです
@app.route('/gallery',methods=['GET','POST'])
def gallery():
error = None
if request.method == "POST":
if 'file' not in request.files:
flash("No file part")
return redirect(request.url)
file = request.files['file']
print file
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
flash('file uploaded successfully')
return render_template('gallery.html')
そして、フォームのHTMLフロントエンドコード:
<div class="page">
<h2>Gallery</h2>
<p>Upload image</p>
<form action="{{ url_for('gallery') }}" method="post" enctype="multipart/form-data">
<input type="file" name="file"><input type="submit">
</form>
</div>
UPLOAD_FOLDER変数をプロジェクトのルートの/ uploadsディレクトリに設定しており、Flaskで画像を保存したいのですが、アップロードする画像を送信するたびに500エラーが発生します。
不思議なことに、代わりにファイルをプロジェクトディレクトリのルートにアップロードしても、エラーは発生しません。このエラーは、ファイルをアップロードディレクトリにアップロードした場合にのみ発生します。
[編集]トレースバックを追加
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/Library/Python/2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Library/Python/2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Library/Python/2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/Library/Python/2.7/sitea-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Library/Python/2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Library/Python/2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/Library/Python/2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/fred/personalsite/cool_site.py", line 70, in gallery
file.save(os.path.join(app.config['UPLOAD_FOLDER'], file.filename))
File "/Library/Python/2.7/site-packages/werkzeug/datastructures.py", line 2653, in save
dst = open(dst, 'wb')
IOError: [Errno 2] No such file or directory: u'/uploads/Lecture 1.pages'
あなたのエラーが言うことは、フォルダが存在しないということです。フォルダ/uploads/
を作成し、プログラムで読み取り可能にします。フォルダがFlaskディレクトリに関連している必要がある場合は、uploads/
代わりに使用してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加