2017-01-18 264 views
1

フラスコを使用してPDFファイルをダウンロードしようとしていますが、ファイルを添付ファイルとしてダウンロードしたくありません。ユーザーのブラウザに個別のWebページとして表示するだけです。私はsend_from_directoryメソッドにas_attachment=Falseオプションを渡してみましたが、運はありませんでした。ここでFlask:ブラウザでPDFファイルを開くようにダウンロードする

は、これまでのところ、私の関数である。

@app.route('/download_to_browser') 
def download_to_browser(filename): 
    return send_from_directory(directory=some_directory, 
           filename=filename, 
           as_attachment=False) 

機能は、ファイルが自分のコンピュータにダウンロードされますが、私はむしろ多くをいただきたいだけで、ブラウザで表示(およびユーザーのダウンロードをしましょうという意味で動作します彼らが望むならばファイル)。

私はcontent-dispositionパラメータを変更する必要がありますが、私はそれが(おそらくカスタム応答を使用して?)を効率的に行うことができるかどうかはわかりませんhereをお読みください。どんな助け?

注:現時点でFlask-Uploadsは使用していませんが、私はおそらくそのラインを下げます。

答えて

1

あなたはsend_from_directorymimetypeパラメータを追加しようとすることができる少なくともFirefoxで、私の作品

return send_from_directory(directory=some_directory, 
          filename=filename, 
          mimetype='application/pdf') 

を。

あなたは、ヘッダーをより詳細に制御する必要がある場合は、カスタム応答を使用することができますが、あなたは(send_fileの利点を失うことになります)(私はそれがウェブサーバから直接ファイルを提供する巧妙な何かをすると思います。)

with open(filepath) as f: 
    file_content = f.read() 

response = make_response(file_content, 200) 
response.headers['Content-type'] = 'application/pdf' 
response.headers['Content-disposition'] = ... 

return response 
関連する問題