2017-06-11 9 views
-2

フラスコのアプリケーションからファイルをダウンロードしようとしています。フラスコのダウンロードファイルが機能しない

私の方法

@admin.route('/download_doc', methods=['GET', 'POST']) 
def download_doc(): 
    doc_id = request.json['id'] 
    doc = Doc.query.filter(Doc.id==doc_id).first() 
    filename = doc.filename 
    uploads = os.path.join(app.root_path, app.config['UPLOAD_FOLDER']) 
    return send_from_directory(directory=uploads, filename=filename) 

エラー404なぜ?

enter image description here

私は、印刷アップロード変数をしようとします。私は、有効なパスではありません参照してください。スラッシュとバックスラッシュと

enter image description here

答えて

0

パスは、Windows用のOKです。この質問を確認する:Difference between forward slash (/) and backslash (\) in file path

しかし、あなたのスクリーンショットでは、あなたのパスに2つの/appフォルダがあり、これが問題になる可能性があります。この方法でファイルを返すようにしてください:

また
return send_from_directory(app.config['UPLOAD_FOLDER'], filename, as_attachment=True) 

Sending files and Performanceについてsend_from_directory方法やヒントをdocumentationをご確認ください。

+0

いいえ、私のアプリの構造は1つのフォルダアプリだけです。 UPLOAD_FOLDER = 'app/static/doc'、app.config ['UPLOAD_FOLDER'] = UPLOAD_FOLDERです。 – Shato

+0

はい、 'upload'フォルダに' root'フォルダを追加していますので、結果に2つの '/ app'アイテムが表示されます(スクリーンショットのように)。 – berserkk

+0

あなたの 'UPLOAD_FOLDER'は' 'static/doc''でなければなりません。send_from_directory(app.config ['UPLOAD_FOLDER']、filename、as_attachment = True) – Shato

関連する問題