首先吐槽, Python的流概念确实拉稀,作为一名Java开发者,看着这个东西,真是当场爆炸
需求是这样,想要把文件写入临时文件,直接返回前端,
第一反应是临时文件解决,首先是临时文件在windows中创建之后是不能再次打开的.会报没有权限.可以设置不自动删除,那么又无法删除还是会落盘
第二反应是写入磁盘,读完之后再删除,然而在返回之前是无法删除的,否则不能正确读取返回.那咋整,定时任务?为了清理临时文件搞定时任务,不是很爽
最后在某个网站的不起眼的角落找到这段代码,完美解决
response = HttpResponse(content_type='application/octet-stream')
zip_file = zipfile.ZipFile(response, 'w')
zip_file.write(release.file_location, release.name)
zip_file.close()
response_name = os.path.splitext(release.name)[0] + '.zip'
response['Content-Disposition'] = 'attachment;filename="{0}"'.format(escape_uri_path(response_name))
return response
直接写入response.
python响应真快, 代码还少.真香