我可以使用javascript在本地创建和保存一个巨大的文件吗

Can I use javascript to locally create and save a humongous file?

本文关键字:一个 巨大 文件 保存 javascript 可以使 创建 我可以      更新时间:2024-04-28

我想使用javascript在客户端创建并保存一个大的.csv文件。这个问题以前已经被问过并回答过(例如,参见1、2、3或4),这可以归结为两种方法(以及其他方法):

  1. 使用FileSaver.js实现w3c的saveAs():

    var lines = ["line 1,cell 11,cell 12'n","line 2,cell 21,cell 22'n"];
    var type = "text/csv;charset=utf-8";
    var blob = new Blob(lines,{"type":type});
    saveAs(blob,"download.csv");
    
  2. 使用a[download]和数据uri:

    var lines = ["line 1,cell 11,cell 12'n","line 2,cell 21,cell 22'n"];
    var type = "text/csv;charset=utf-8";
    var downloader = $('<a download href="data:'+type+','+escape(lines.join(''))+'"></a>')
        .appendTo("body")
    downloader[0].click();
    downloader.remove();
    

我的问题是我的文件可能是巨大的:1800万条线路和2.5 Gb(我希望能够处理更多)。创建lines会占用太多内存并导致网站崩溃。但是,没有理由仅仅为了将lines保存到硬盘驱动器而将其存储在浏览器的内存中。有没有一种方法可以使用javascript创建渐进式下载(换句话说,开始下载,但在计算时不断添加行)?或者我唯一的选择是将文件作为单独的块下载,然后用户必须将其连接在一起?

如果您正在使用HTML5,您可以尝试使用FileSytem API。请参阅此处获取有关该主题的信息,并参阅此处获取关于如何从客户端创建和访问文件的更实用的示例。