flaskでファイルをアップロードできます ploading Files :
<form>
_タグは_enctype=multipart/form-data
_でマークされ、_<input type=file>
_がそのフォームに配置されます。save()
メソッドを使用して、ファイルシステムのどこかにファイルを永続的に保存します。しかし、フォルダや一部のファイルをアップロードする方法がわかりません。検索したところ、 Flaskを使用した複数のファイルのアップロード が見つかりました。
ただし、それでもフォルダとそのフォルダに属するファイルをアップロードする方法がわかりません。
方法を教えていただけますか?
私が取り組んでいるディレクトリツリー:
_.
├── manage.py
├── templates
│ ├── file_upload.html
│ └── hello.html
└── uploads
├── BX6dKK7CUAAakzh.jpg
└── sample.txt
_
アップロードファイルのソースコード:
_from flask import Flask,abort,render_template,request,redirect,url_for
from werkzeug import secure_filename
import os
app = Flask(__name__)
UPLOAD_FOLDER = './uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@app.route('/')
def index():
return redirect(url_for('hello'))
@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name = None):
return render_template('hello.html',name=name)
@app.route('/upload/',methods = ['GET','POST'])
def upload_file():
if request.method =='POST':
file = request.files['file']
if file:
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'],filename))
return hello()
return render_template('file_upload.html')
if __name__ == '__main__':
app.run(debug = True)
_
ファイルのアップロード用テンプレート(manage.py):
_<!doctype html>
<title>Upload new File</title>
<h1>Upload new File</h1>
<form action='' method="POST" enctype="multipart/form-data">
<p><input type='file' name='file[]' multiple=''>
<input type='submit' value='upload'>
</p>
</form>
_
file = request.files['file']
に変更
file = request.files['file[]']
ここでの問題は、フラスコのapp.config
はそれ自体に相対的ではなく、絶対的であるということです。だからあなたが置くとき:
UPLOAD_FOLDER = './uploads'
フラスコはこのディレクトリを見つけられず、500
エラーを返します。次のように変更した場合:
UPLOAD_FOLDER = '/tmp'
次にファイルをアップロードし、表示される/ tmp /ディレクトリに移動します。
ファイルを適切にアップロードするには、適切なディレクトリへのパスを編集する必要があります。