0

我在客户端有 JSON 数组,它在 UI 中呈现。用户想要将内容下载为文件。如何将内容从客户端发送到服务器并作为文件下载。

我发现 POST Ajax 请求不允许我们下载文件。我该怎么做?

4

1 回答 1

1

如果内容在客户端可用,则必须将其发送到服务器。尝试这样的事情:

<a id="download_link">Download</a>
$('#download_link').on('click', function(e){
    e.preventDefault();
    window.location = 'my-handler.php?json=' + myJsonString;
});
// or without jQuery
document.getElementById('download_link').onclick = function(){
   window.location = 'my-handler.php?json=' + myJsonString;
};

然后强制下载my-handler.php,使用发送到服务器的数据作为文件内容:

// Use equivalent in your server side script if not using PHP
$filename = 'download-'.time().'.json';
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: Binary');
header('Content-disposition: attachment; filename="'.$filename.'"'); 
exit($_GET['json']);

使用这种方法,当前窗口不应该被替换,但下载提示应该开始,但如果你愿意,你可以在新窗口中打开。

这是一个快速而肮脏的解决方案。请注意,这将允许人们输入任何内容并下载文件。至少首先验证内容可能是明智的。内容太大也可能存在问题。

于 2013-06-04T17:18:47.500 回答