小编典典

在Django中返回HttpResponse后删除tmp文件

python

我正在使用以下django / python代码将文件流式传输到浏览器:

wrapper = FileWrapper(file(path))
response = HttpResponse(wrapper, content_type='text/plain')
response['Content-Length'] = os.path.getsize(path)
return response

返回响应后,是否可以删除文件?使用回调函数之类的?我可以做一个cron来删除所有tmp文件,但是如果我可以流式传输文件并从同一请求中删除它们,那将变得更加整洁。


阅读 215

收藏
2020-12-20

共1个答案

小编典典

您可以使用NamedTemporaryFile:

from django.core.files.temp import NamedTemporaryFile
def send_file(request):
    newfile = NamedTemporaryFile(suffix='.txt')
    # save your data to newfile.name
    wrapper = FileWrapper(newfile)
    response = HttpResponse(wrapper, content_type=mime_type)
    response['Content-Disposition'] = 'attachment; filename=%s' % os.path.basename(modelfile.name)
    response['Content-Length'] = os.path.getsize(modelfile.name)
    return response

撤消newfile对象后,应删除临时文件。

2020-12-20