Flaskからsend_fileでJavaScriptへファイルをレスポンスした後に、
サーバー側(python)のファイルを消したいのですがどうすればいいのでしょうか?
ダウンロードするファイルはPDFです。
@after_this_requestでレスポンス後にファイル削除の処理を入れましたが、
ファイルがまだアクセス中で消すことができませんでした。
JavaScript
1axios({ 2 method: 'post', 3 url: '/savepdf', 4 responseType: 'blob', 5 dataType: 'binary', 6 }).then(response => { 7 8 let blob = new Blob([response.data]); 9 let link = document.createElement('a') 10 link.href = window.URL.createObjectURL(blob) 11 link.download = “test.pdf“; 12 link.click() 13 14 }).catch(function (error) { 15 console.log(error); 16 }); 17
python
1from flask import render_template, request, jsonify, send_file, send_from_directory, after_this_request 2import os 3 4 5# PDF保存 6@app.route('/savepdf', methods=['POST']) 7def savepdf(): 8 try: 9 filepath = get_file_path() # ファイルパス 10 file_handle = open(filepath, 'rb') 11 12 @after_this_request 13 def remove_file(response): 14 try: 15 print('After request ...') 16 file_handle.close() # ★ここではまだファイルアクセス中のためエラー 17 os.remove(filepath) 18 except: 19 return output_error() 20 return response 21 22 return send_file(file_handle, as_attachment=True, mimetype='application/pdf', attachment_filename="dummy") 23 24 except: 25 return jsonify(res = False)

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/03/30 04:05
退会済みユーザー
2019/04/01 12:16