无法让浏览器从python cgi脚本下载

时间:2014-01-27 21:22:41

标签: jquery python ajax download cgi

我正在尝试将.JSON下载到客户端计算机以进行备份。现在,我这样做的方式是通过JQuery POST请求调用cgi脚本。我按照指南at the bottom of this page关于提出“文件下载...”框,以及来自this question's接受回答的信息。

此刻,脚本运行,并正确返回JSON,但浏览器不会自动下载它,也不会像我预期的那样引发“文件下载”框。

以下是脚本中的标题和打印语句:

print "Content-Type: application/octet-stream; name='testfile.json'"
print "Content-Disposition: attachment; filename='testfile.json'\n"
print json.dumps(configJSON)

我不确定我是否错误地格式化了上述内容,或者是否必须向我的请求添加内容以便下载响应。我的要求目前如下:

$.ajax({
    type: 'POST',
    url: 'cgi-bin/sendConfig.py',
})

正如我上面所说,我可能会看到可能需要在请求中添加.done()函数,但是上面链接的文章的编写方式,似乎应该是Content-Type和Content-Disposition设置自动开始下载

1 个答案:

答案 0 :(得分:1)

Javascript by design无法访问文件系统,因此无法通过ajax启动文件下载。

如果您直接使用浏览器访问该网址(cgi-bin / sendConfig.py),您将收到下载提示。

如果您需要通过javascript启动此下载,可以尝试一些选项。 您可以重定向到该页面:

window.location.href = "http://yoursite.com/cgi-bin/sendConfig.py";

或向网页添加隐藏的iframe:

$('body').append('<iframe src="http://yoursite.com/cgi-bin/sendConfig.py" style="display:none;"></iframe>');