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