我使用ajax向django函数发送请求,然后django函数生成一个zip文件并将其提供给用户。如果我转到url domain.com/django/builder/zipit/
,文件会按预期生成并下载到我的计算机上,但是当使用ajax并返回响应时,ajax无法下载它。我可以将响应传递给一个php变量并以这种方式下载它吗?使用iframe是不起作用的,因为文件是动态创建的。在
阿贾克斯
$.ajax({
type: 'POST',
url: '/django/builder/zipit/',
data: serialize,
success: function(response){
//pass response to php somehow
}
在视图.py在
^{pr2}$
你不需要把它传递给PHP变数。一切在django本身是可能的。在
mimetype设置为application/x-zip-compressed
但是请注意,在每个请求上创建zip归档文件是个坏主意,这可能会杀死服务器(如果归档文件很大,则不计算超时)。性能明智的方法是将生成的输出缓存到文件系统中的某个位置,并仅在源文件发生更改时才重新生成它。更好的办法是提前准备归档文件(例如通过cron作业),并让您的web服务器像平常一样为它们提供静态服务。在
相关问题 更多 >
编程相关推荐