2016-05-05 21 views
0

フラスコ+ nginxのフラスコ+ nginxのが、ファイルのダウンロードエラー(ファイルサイズ:0キロバイト)?

私はjsのコードでwindow.open('/Download/test.xls')を使用し、私のようなファイルのTest.xlsを

と私のコードをダウンロードしたいと思いますこの:このような

@app.route('/Download/<filename>') 
def download(filename): 
response = make_response() 

response.headers['Cache-Control'] = 'no-cache' 
response.headers['Content-Type'] = 'application/vnd.ms-excel' 
response.headers['Content-Description'] = 'File Transfer' 
response.headers['Content-Disposition'] = 'attachment; filename=%s' % filename 

return response 

とnginx.conf:

server { 
    listen  80; 
    server_name tongji.yunzx.com; 

server_name_in_redirect off; 

proxy_set_header Host $host:$server_port; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header REMOTE-HOST $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

location/{ 
    proxy_pass http://127.0.0.1:5000/; 
    } 

location /Download/(.*) { 
internal; 
root /root/HostMonitor/; 
    } 
} 

トンからファイルのTest.xlsをするdowload彼のウェブサイズは0kbで、それを開くことはできません。なぜですか?

xftpのようなツールを使用してサーバーのtest.xlsを確認しても問題ありません.brom.butによるダウンロードは壊れています。

なぜ、ありがとう。

答えて

0

理由は、応答オブジェクトを作成していくつかのヘッダーを添付しても、添付ファイルで何もしないため、空のファイルが得られるからです。フラスコ中で

send_from_directoryと呼ばれる機能があります:

)はsend_file(で与えられたディレクトリからファイルを送信します。これは、アップロードフォルダなどから静的ファイルをすばやく公開する安全な方法です。

あなたは試すことができます:

@app.route('/Download/<path:filename>') 
def download(filename): 
    return send_from_directory(app.config['UPLOAD_FOLDER'], 
           filename, as_attachment=True) 
関連する問題