初めての Flask アプリケーションを作成しています。ファイルのアップロードを扱っていますが、基本的に私がやりたいのは、アップロードされたファイルのデータ/コンテンツを保存せずに読み取り、結果のページに印刷することです。はい、ユーザーが常にテキスト ファイルをアップロードすることを前提としています。
私が使用しているシンプルなアップロード機能は次のとおりです。
@app.route('/upload/', methods=['GET', 'POST'])
def upload():
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))
a = 'file uploaded'
return render_template('upload.html', data = a)
現在、ファイルを保存していますが、必要なのはファイルの内容/データを格納するための「a」変数です。何かアイデアはありますか?
ベストアンサー1
FileStorage
フィールドが含まれていますstream
。このオブジェクトは IO またはファイル オブジェクトを拡張する必要があるため、read
およびその他の同様のメソッドが含まれている必要があります。FileStorage
また、フィールド オブジェクト属性も拡張するstream
ため、file.read()
代わりにを使用できます。また、パラメーターとして引数を、または他の IO またはファイル オブジェクトとして使用して、別の IO またはファイル オブジェクトにコピーすることもfile.stream.read()
できます。save
dst
StringIO
FileStorage.stream
ドキュメントを参照してください:http://flask.pocoo.org/docs/api/#flask.Request.filesそしてhttp://werkzeug.pocoo.org/docs/datastructures/#werkzeug.datastructures.FileStorage。