我正在使用以下django / python代码将文件流式传输到浏览器:
wrapper = FileWrapper(file(path)) response = HttpResponse(wrapper, content_type='text/plain') response['Content-Length'] = os.path.getsize(path) return response
返回响应后,是否可以删除文件?使用回调函数之类的?我可以做一个cron来删除所有tmp文件,但是如果我可以流式传输文件并从同一请求中删除它们,那将变得更加整洁。
您可以使用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对象后,应删除临时文件。