SGH*_*SGH 1 python zip zipfile flask
我正在使用一个 Flask 应用程序,该应用程序从 Web 服务器的文件夹中获取多个文件,并创建一个包含这些文件的 zip 文件,最终将该 zip 文件发送给用户。我的问题是我无法在发送后从 Web 服务器中删除 zip 文件。
我尝试使用@after_this_request命令解决问题。
在这里,我展示了我编写的代码的简化版本。我发送了之前创建的 zip 文件,然后尝试删除它。
@app.route('/sendFile')
def sendFile():
@after_this_request
def removeFile(response):
os.remove(zip_path)
return response
return send_from_directory(path, filename=zipname, as_attachment=True)
Run Code Online (Sandbox Code Playgroud)
问题是引发了一个错误,指出无法删除 zip 文件,因为它仍在被其他进程使用。我在其他类型的文件中看到过类似的问题:
但是,在我使用 zip 文件的情况下,它们不起作用。
小智 5
您可以将文件作为字节读取,删除 zip,然后使用 flask.Response 流式传输响应。像这样的事情可能会奏效:
from flask import Response
@app.route('/sendFile')
def sendFile():
with open(os.path.join(path, zipname), 'rb') as f:
data = f.readlines()
os.remove(os.path.join(path, zipname))
return Response(data, headers={
'Content-Type': 'application/zip',
'Content-Disposition': 'attachment; filename=%s;' % zipname
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2200 次 |
| 最近记录: |