【问题标题】:Flask - send_from_directory returns old fileFlask - send_from_directory 返回旧文件
【发布时间】:2013-07-28 21:37:24
【问题描述】:

当我填写并提交 pdf 表单时,send_from_directory 会返回旧文件。我使用 pdftk 将 fdf 推送到 pdf 并展平,但是如果我提供与旧文件相同的文件名,Flask 会显示旧文件。为什么不被新的覆盖?谢谢。

【问题讨论】:

  • 这听起来不像是 Flask 问题。显示我们可以运行并重现您描述的行为的代码。

标签: pdf flask pdftk


【解决方案1】:
@app.route('/uploads/<filename>')
def show_pdf_form(filename):
return send_from_directory(app.config['UPLOAD_FOLDER'], filename)

@app.route('/get_data_as_fdf', methods = ['GET', 'POST'])
def get_pdf_data_as_fdf():

# create fdf file
fdf_string = request.data
fdf_file = open(os.path.join(app.config['UPLOAD_FOLDER'], "data.fdf"), "w")
fdf_file.write(fdf_string)
fdf_file.close()

# merge fdf to pdf and flatten pdf
call(["pdftk", "./uploads/send_data_as_fdf.pdf", "fill_form",
      "./uploads/data.fdf", "output", "output.pdf", "flatten"])

return redirect(url_for('show_pdf_form', filename = filename))

这些是相关的代码sn-ps。谢谢。

【讨论】:

    【解决方案2】:

    Flask send_from_directory 在内部使用 send_filesend_file 有缓存超时,你可以设置为 0。

    尝试清除缓存并以隐身模式访问 URL。如果可行,您可以这样做:

     send_from_directory(app.config['UPLOAD_FOLDER'], filename, cache_timeout=0)
    

    或者您可以尝试以下中提到的任何选项: Disabling caching in Flask

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 1970-01-01
      • 2019-09-11
      • 2022-01-18
      • 2019-11-22
      • 1970-01-01
      • 2016-11-10
      • 2023-01-27
      • 1970-01-01
      相关资源
      最近更新 更多