我在客户端有 JSON 数组,它在 UI 中呈现。用户想要将内容下载为文件。如何将内容从客户端发送到服务器并作为文件下载。
我发现 POST Ajax 请求不允许我们下载文件。我该怎么做?
我在客户端有 JSON 数组,它在 UI 中呈现。用户想要将内容下载为文件。如何将内容从客户端发送到服务器并作为文件下载。
我发现 POST Ajax 请求不允许我们下载文件。我该怎么做?
如果内容仅在客户端可用,则必须将其发送到服务器。尝试这样的事情:
<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']);
使用这种方法,当前窗口不应该被替换,但下载提示应该开始,但如果你愿意,你可以在新窗口中打开。
这是一个快速而肮脏的解决方案。请注意,这将允许人们输入任何内容并下载文件。至少首先验证内容可能是明智的。内容太大也可能存在问题。