2017-01-30 1 views
2

thisビデオのチュートリアルに基づいて、フラスコを使って基本的なアップロード機能を作成しました。Python-Flaskでアップロードされたファイルをどのように処理できますか?

「メイン」のpythonファイルのコードは、次のとおりです。基本的に、 'ウェブページ'を実行するとアップロード機能があり、一度ファイルを選択すると、フラスコプログラム内の他のフォルダと一緒に作成または存在するフォルダに追加されます。

私の質問は次のとおりです。ファイルをアップロードして、非フラスコのPythonコードの別のブロックですぐに処理するようにします。これを行うにはどのような原則を守らなければなりませんか?たとえば、PythonスクリプトでCSVファイルを処理するには?理論的には、pythonスクリプトは適切なファイルがアップロードされたときにアクティブになるテンプレートフォルダ内のHTMLファイルに常駐できますか?

import os 
from flask import Flask, render_template, request 


app = Flask(__name__) 

APP__ROOT = os.path.dirname(os.path.abspath(__file__)) 

@app.route("/") 
def index(): 
    return render_template("upload.html") 

@app.route("/upload", methods=['POST']) 
def upload(): 
    target = os.path.join(APP__ROOT, 'data/') 
    print(target) 

    if not os.path.isdir(target): 
     os.mkdir(target) 

    for file in request.files.getlist("file"): 
     print(file) 
     filename = file.filename 
     destination = "/".join([target, filename]) 
     print(destination) 
     file.save(destination) 

    return render_template("complete.html") 

if __name__ == "__main__": 
    app.run(port=4555, debug=True) 

答えて

1

ファイルを処理する関数を書きます。ビュー関数で、その新しい関数を呼び出します。例えば

def process_file(filename): 
    print filename 

... 
file.save(destination) 
process_file(destination) 

あなたの処理が長すぎる場合は、多分あなたは、要求が行われた後、バックグラウンドでそれを処理したいです。 Pythonにはpython-rqceleryのようなツールがあります。

関連する問題