Javascript 是否可以触发文件下载到用户';s浏览器?
是否可以强制将文件下载到用户的浏览器(当然有标准的对话框提示)?由服务器触发。基本上,我正在考虑将一个文件从服务器文件系统推送到浏览器。或者这是不可能的,因为安全沙箱?Javascript 是否可以触发文件下载到用户';s浏览器?,javascript,html,ajax,json,cgi,Javascript,Html,Ajax,Json,Cgi,是否可以强制将文件下载到用户的浏览器(当然有标准的对话框提示)?由服务器触发。基本上,我正在考虑将一个文件从服务器文件系统推送到浏览器。或者这是不可能的,因为安全沙箱? 如果这是不可能的,是否有一个不同的方式非常接近这一点?我不想发送未经用户同意的文件。我可以考虑两步方法,首先提示用户输入数据,然后让用户单击OK按钮触发下载,但在下载接近结束时,用户将得到另一个确认框(要求打开或保存的标准下载提示)。如果一步就能做到,那就太好了。这绝对是可能的。假设您希望此消息由服务器触发,只需向他们发送以下标
如果这是不可能的,是否有一个不同的方式非常接近这一点?我不想发送未经用户同意的文件。我可以考虑两步方法,首先提示用户输入数据,然后让用户单击OK按钮触发下载,但在下载接近结束时,用户将得到另一个确认框(要求打开或保存的标准下载提示)。如果一步就能做到,那就太好了。这绝对是可能的。假设您希望此消息由服务器触发,只需向他们发送以下标题:
Location: http://www.foo.com/path/to/file
其中foo.com
是您的域,它包含文件的路径。这会将用户发送到您的文件链接,并让他们自动下载
现在,为了解决浏览器查看内容的问题,您需要使用服务器端代码来发布内容标题信息(以PHP为例):
希望这能很好地作为伪代码让您开始。祝你好运 由于您知道必须提示用户,请尝试使用带有type=“application/octet stream”
的普通超链接
您还可以在标题中使用:“内容处置:附件”
。使用每5秒或10秒轮询服务器的ajax json脚本,
当服务器有一个文件准备就绪时,响应为肯定回答“我有一个文件”,让iframe移动到文件所在的url,然后将其作为正常下载处理
我已经提供了一个小例子,说明我应该如何认为它应该起作用,这样你就有了工作的基础。我还没有检查它是否有bug,它更像是一个概念证明
jQuery示例(不含json):
PHP代码
$x = filecheckingfunction();// returns false if none, returns url if there is a file
if($x !== false)
{
echo 'I have a file\n';
echo $x;
}
不一定-如果它们在浏览器中,并且您将它们链接到图片(或其他类似资源),则浏览器只会查看图片。
$.ajax('/myserverscript.php?fileready=needtoknow').done(function(data)
{
if(data.indexOf("I have a file") != -1)
{
xdata = data.split('\n');
data = xdata[1];
document.getElementById('myiframe').location.href = data;
}
});
$x = filecheckingfunction();// returns false if none, returns url if there is a file
if($x !== false)
{
echo 'I have a file\n';
echo $x;
}