iT邦幫忙

0

python flask send_from_directory的使用問題

  • 分享至 

  • xImage
@app.route("/resume_result",methods=['POST','GET'])
def resume_result():
api=request.form['apiname']
    jsondata=request.form['userinput好']
    res=requests.post(apilist[api], json=json.loads(jsondata))
    filename=api+str(datetime.now()).replace(' ', '').replace(':','')
    if not os.path.exists('file'):
        os.mkdir('file')
    with open(f'file/{filename}.odt','wb') as f:
        f.write(res.content)
    return render_template('result.html', link=f'{filename}.odt')
@app.route('/download/<path:filename>',methods=['POST','GET'])
def download(filename):
    return send_from_directory(directory='file',filename=filename)

以上是部分的程式碼,上面的做法是把檔案下載到file資料夾後,跳轉到result.html頁面並提供一條下載連結,
此下載連結檔案會利用send_from_directory,把file內的檔案回傳。
我想請問的是我能夠把以上程式碼改成以下

@app.route("/resume_result",methods=['POST','GET'])
def resume_result():
    api=request.form['apiname']
    jsondata=request.form['userinput好']
    res=requests.post(apilist[api], json=json.loads(jsondata))
    filename=api+str(datetime.now()).replace(' ', '').replace(':','')
    if not os.path.exists('file'):
        os.mkdir('file')
    with open(f'file/{filename}.odt','wb') as f:
        f.write(res.content)
    return send_from_directory(directory='file',filename=filename)

把提交過來的表單內容處理完後建完檔案直接回傳,而不用再提供一個頁面提供下載連結,但是程式的回傳結果會是錯誤的"POST /resume_result HTTP/1.1" 404。
我想請問是哪邊的想法有問題和為什麼不能這樣做?

hokou iT邦好手 1 級 ‧ 2021-08-05 15:13:23 檢舉
最後一行
return send_from_directory(directory='file',filename=f'{filename}.odt')

試試看?
yujui0405 iT邦新手 5 級 ‧ 2021-08-05 17:48:54 檢舉
是的謝謝你 剛剛有發現問題出在這了,感謝
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答