是否可以使用 JavaScript/AJAX 在客户端创建文件? [复制]

Posted

技术标签:

【中文标题】是否可以使用 JavaScript/AJAX 在客户端创建文件? [复制]【英文标题】:Is it possible to create a file on the client side using JavaScript/AJAX? [duplicate] 【发布时间】:2016-09-14 02:28:26 【问题描述】:

是否可以使用 javascript/AJAX 和服务器端响应(例如字符串)在客户端生成文件,然后打开此文件下载窗口?例如一个简单的.txt

如果可能的话,是否有任何解决方案可以生成.xlsx 文件?

【问题讨论】:

不,JS 不能访问文件系统,但是根据你想要创建的文件类型和你想用它做什么,你可能能够为一个文件生成一个 dataURI.. 当然:Ajax 不适合这个 ^^ 只是为了好奇。 【参考方案1】:

这将创建一个 CSV,您可以根据对象数组(window.EXPORTDATA)在 excel 中打开该 CSV:

        var csvContent = [];

        for(var i=0; i<window.EXPORTDATA.length; i++)
          var rowContent = [];
          var row = window.EXPORTDATA[i];
          if(csvContent.length === 0)
            for(var p in row)
              if(row.hasOwnProperty(p))
                rowContent.push('"'+ (""+p).replace('"','').replace(',','') +'"');
            csvContent.push("data:text/csv;charset=utf-8,"+rowContent.join(","));
            rowContent = [];
          
          for(var p in row)
            if(row.hasOwnProperty(p))
              rowContent.push('"'+ (""+row[p]).replace('"','').replace(',','') +'"');
          
          csvContent.push(rowContent.join(","));
        

        var dat = csvContent.join("\n");
        var encodedUri = encodeURI(dat);
        window.open(encodedUri);

这是一个fiddle.. 当您运行它时,它会要求您在 Excel 或任何您使用的文件中打开文件..

【讨论】:

以上是关于是否可以使用 JavaScript/AJAX 在客户端创建文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Javascript/Ajax NTLM 身份验证

当用户到达页面末尾以加载新内容时,如何调用 JavaScript (AJAX) 函数?

JavaScript Ajax之美~

JavaScript-Runoob-AJAX:AJAX 教程

Javascript,ajax和内存使用情况

javascript ajax