首页 > 解决方案 > 下载同名的不同文件 一次又一次地获取上一个文件

问题描述

我只是创建了一个可以使用 XLSXWRITER 生成 excel 文件的 Web 应用程序。它可以使用 python 使用 send_file 命令下载文件。但问题是每当我下载文件时,有时会发生一个罕见的错误,例如下载我之前下载的上一个文件,当您检查文件时,它应该是新文件。我不知道它是否在缓存问题上。

我已经测试了什么:

使用 2 个设备检查文件。当一台设备上发生错误时,我将其下载到另一台设备上并且它可以工作。

清除浏览器数据和缓存(不解决任何问题)

重新启动互联网和电脑甚至 python 乘客(不解决任何问题)

==================================================== ================

我使用python作为我的后端和xlsxwriter来编写excel文件。

这就是下载工作:

当你点击下载按钮

=> 它创建一个 xlsx 文件,然后在上面写入数据

=>它将xlsx保存在服务器文件夹中

=> 重定向到使用 send_file 将 excel 文件发送到下载流的路由

=>从服务器获取下载文件。

一切都发生在一次点击

该过程的代码python:

@__app.route('/report', methods=['GET','POST'])
@is_logged_in
def report():

if request.method == 'POST':
    if request.form['action'] == 'DownloadReport':
        __CustomerName_AddReport_Form = request.form['CustomerNametxt']
        __Tax_AddReport_Form = request.form['Taxtxt']
        __Bulan_AddReport_Form = request.form['Bulantxt']
        __Tahun_AddReport_Form = request.form['Tahuntxt']
        if __CustomerName_AddReport_Form:       

            workbook = xlsxwriter.Workbook('Report.xlsx')
            worksheet = workbook.add_worksheet()

            worksheet.write('B2','ANYTHING')            

            workbook.close()

            return render_template('downloadreport.html')
else:
    return render_template('report.html')

@__app.route('/downloadreport', methods=['GET'])
def downloadreport():
    return send_file('/home/suiinkxy/jakarta/Report.xlsx' ,as_attachment=True)

任何人都可以对此提供帮助,如果可以让我变得更好,我将不胜感激批评和意见。之前谢谢你。

更新信息 :

Whenever the file is downloading the fresh one the network response is status code : 200 OK, But everytime it failed the response (download the previous version) it changed into [Status Code : 200 OK (From disk cache) ]. Any solution to disable it ?  *I am using flask for my python and html for frontend.

更新信息(1):

我发现了问题,这完全与浏览器上的缓存有关。如果我在 chrome 上使用禁用缓存,一切都很好,或者使用总是从边缘刷新。问题是如何永远禁用我的 python 或浏览器(chrome 或 edge)的缓存,而不仅仅是开发人员选项(f12)。

标签: pythonpython-2.7downloadxlsxwritersendfile

解决方案


推荐阅读