4

我想知道是否可以通过仅使用客户端 javascript 使浏览器的行为与看到“内容处置:附件;文件名 = ...”时的行为相同?这意味着要保存的文件的数据仅在客户端可用。

即假设我们有一个javascript数组,仅在客户端,

var data = [
              ["aa","bb","cc","dd","ee","ff","gg","hh","ii"]
              [ 1,   2,   3,   4,   5,   6,   7,   8,   9],
              ..
           ];

我想将此数组作为文本文件保存到用户的计算机。必须提示用户输入文件名(即我不是试图绕过浏览器的安全设置或类似的东西)。

如果不将数组存储到服务器的临时文件并发出另一个请求将此临时文件返回给用户,这是否可行?如果这个问题没有简单的答案 - 任何想法、谷歌关键字或链接都非常感谢。

4

4 回答 4

1
var YourTextData = "text data here";
window.location.href = "data:application/octet-stream," + encodeURIComponent(YourTextData);
于 2014-07-08T19:50:20.263 回答
1

您不能使用纯 JavaScript 解决方案来做到这一点——您需要让文件推送来自服务器。

但是您不必在服务器上拥有“物理”文件即可完成此操作。您可以将数据字符串存储在内存中并从内存写入响应流。但是如果不告诉我们您正在使用哪种服务器端技术,您将无法获得有关如何做到这一点的任何更详细的答案。

于 2011-04-07T21:02:51.403 回答
1

AFAIK,你不能以任何跨浏览器的方式使用 Javascript 来很好地做到这一点。

如果您真的不想使用服务器,您可以使用 Flash 制作混合解决方案。本质上,您将制作一个自定义 Flash 控件,您将通过 Javascript(外部接口)与之通信,然后 Flash 控件将启动“文件保存”操作。

这是有关该主题的文章:使用 Flash Player 10 在本地保存文件

于 2011-04-07T21:04:04.253 回答
1

看看dowloadify:它使用@Adam 建议的技术

于 2012-04-13T15:54:04.657 回答