我想知道是否有可能使浏览器的行为方式与看到"Content-disposition: attachment;文件名=…"只使用客户端javascript ?这意味着要保存的文件的数据仅在客户端可用。
。假设我们有一个javascript数组,只在客户端,
var data = [
["aa","bb","cc","dd","ee","ff","gg","hh","ii"]
[ 1, 2, 3, 4, 5, 6, 7, 8, 9],
..
];
,我想把这个数组作为文本文件保存到用户的计算机上。必须提示用户输入文件名(例如:我没有试图绕过浏览器的安全设置或类似的东西)。
如果不将数组存储到服务器的临时文件并再次请求将此临时文件返回给用户,这是可行的吗?如果这个问题没有简单的答案-任何想法,谷歌关键词或链接是非常感激的。
您不能使用纯JavaScript解决方案—您需要让来自服务器的文件推送。
但是你不需要在服务器上有一个"物理"文件来完成这个。您可以将数据字符串存储在内存中,并从内存写入响应流。但是,如果不告诉我们您正在使用的服务器端技术,您将无法得到关于如何做到这一点的更详细的答案。
我敢肯定,使用Javascript在任何跨浏览器的方式下都无法很好地做到这一点。
如果你真的不想使用服务器,你可以使用Flash制作一个混合解决方案。从本质上讲,你可以创建一个自定义的Flash控件,你可以通过Javascript (ExternalInterface)与之通信,然后Flash控件将启动"文件保存"操作。
这里有一篇关于这个主题的文章:用Flash Player 10保存文件
看看downloadadify:它使用了@Adam
var YourTextData = "text data here";
window.location.href = "data:application/octet-stream," + encodeURIComponent(YourTextData);