私はFlaskの簡単なアプリケーションを持っています。アップロードされたExcelファイルを処理し、そのデータをWebページに表示したいと思います。これまでにExcelファイルをアップロードするページがありました。Flaskでアップロードファイルを処理する方法は?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>upload</title>
</head>
<body>
<form method="POST" enctype=multipart/form-data action ="{{url_for('upload')}}">
<input type="file" name="user_file">
<input type="submit">
</form>
</body>
</html>
upload.html
main.py
from flask import Flask, render_template, send_file, request
from flask_uploads import UploadSet, configure_uploads, DOCUMENTS, IMAGES
app = Flask(__name__)
#the name 'datafiles' must match in app.config to DATAFILES
docs = UploadSet('datafiles', DOCUMENTS)
app.config['UPLOADED_DATAFILES_DEST'] = 'static/uploads'
configure_uploads(app, docs)
@app.route("/", methods=['GET'])
def index():
# return send_file("templates/index.html")
return render_template('index.html')
@app.route("/upload", methods = ['GET', 'POST'])
def upload():
#user_file is the name value in input element
if request.method == 'POST' and 'user_file' in request.files:
filename = docs.save(request.files['user_file'])
return filename
return render_template('upload.html')
@app.route("/mergedata", methods=['GET'])
def merge_data():
return send_file("templates/mergeDataPage.html")
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True)
ファイルがアップロードされると、私は別のPythonスクリプトを使用して、このエクセルデータを処理したい - このスクリプトは、Excelがかかります特殊文字を削除し、csvファイル/出力に変換します。私はウェブページにCSV出力を表示したいと思います。
ユーザーはファイルをアップロードし、ボタンを押してデータを消去し、結果を出力ボックスに出力することが考えられます。このシナリオのようなものを構築するにはどうすればいいですか?
私はFlaskにはかなり新しいですが、これまでにこのクールなWebフレームワークを学ぶのは非常にエキサイティングでした。あなたの助けに感謝します、ありがとう!
@vishes_shell私はフラスコに新たなんだから、単にファイルをアップロードする方法を考え出し、ルートを設定しますパンドにスクリプトを作りましたパンダを使ってファイルをCSV形式に変換します。私はあなたが答えを探しているというアイデアを得ることができなかったことを願っています。おそらく 'main.py'からデータを処理し、現在のページに結果を表示する方法についての指示が必要です。たぶんいくつかのチュートリアルが参考になるでしょう。また、私はパンダスクリプトをクラスとして作成し、 'main.py'から呼び出してjsonとして配信することを考えていました。私のバックグラウンドはフロントエンドの開発者にあります。 – medev21
ファイルを保存した場合、そのファイルを簡単にレンダリングできるデータに変換するスクリプトがあります。これはおそらく完了しています。アップロードビュー(ファイルを保存した後)ですべてを行い、その後そのデータでテンプレートをレンダリングします。 –