JavaScript进程会生成大量数据(200-300MB)。我想保存这些数据以进行进一步的分析,但是到目前为止,我发现最好的方法是使用此示例http://jsfiddle.net/c2U2T/进行保存,这对我来说不是一个选项,因为它看起来需要所有数据才能开始下载。但是我需要的是

var saver = new Saver();
saver.save(); // The Save As ... dialog appears
saver.onaccepted = function () { // user accepted saving
    for (var i = 0; i < 1000000; i++) {
        saver.write(Math.random());
    }
};

当然,代替Math.random()将会是一些有意义的构造。

最佳答案

@dader-我将以dader的示例为基础。

  • 使用HTML5 FileSystem API-而不是每行写入文件(IO值不如其值),您可以批处理javascript对象/数组/字符串中的某些行,并将其仅写入到当达到一定阈值时将文件归档。因此,您将在进程切换时将其追加到本地文件(使其易于暂停/重新启动/停止等)
  • 以下是一个值得注意的示例,它是如何生成对话框以请求所需数据量(听起来很大)的示例。经过 Chrome 测试:
    navigator.persistentStorage.queryUsageAndQuota(
    function (usage, quota) {
      var availableSpace = quota - usage;
      var requestingQuota = args.size + usage;
      if (availableSpace >= args.size) {
        window.requestFileSystem(PERSISTENT, availableSpace, persistentStorageGranted, persistentStorageDenied);
      } else {
        navigator.persistentStorage.requestQuota(
            requestingQuota, function (grantedQuota) {
              window.requestFileSystem(PERSISTENT, grantedQuota - usage, persistentStorageGranted, persistentStorageDenied);
            }, errorCb
          );
      }
    }, errorCb);
    
  • 完成后,您可以使用Javascript打开一个新窗口,其中包含您保存的那个Blob对象的url,您可以通过以下方式进行检索:fileEntry.toURL()
  • 或-完成处理后,您可以仅在html链接中显示该URL,然后他们可以右键单击该URL并执行所需的“将链接另存为”。

  • 但这是一个新颖而又酷的事情,您可以完全在浏览器中完成操作,而无需任何方式涉及服务器。旁注,由Javascript Process生成的200-300MB数据听起来绝对是巨大的……这将是您是否要存储“正确的”数据的问题……

    10-01 06:55
    查看更多