gpt4 book ai didi

javascript - 无法使用javascript下载大数据

转载 作者:技术小花猫 更新时间:2023-10-29 12:55:45 25 4
gpt4 key购买 nike

我在 JavaScript 中有一个 JSON 对象形式的大数据。我已使用 JSON.stringify() 将其转换为字符串。现在我的用例是在文本文件中向用户提供这个大字符串。为此,我编写了以下代码。

HTML代码

  <button id='text_feed' type="submit">Generate ION Feed</button>

<a href="data:attachment/txt" id="textLink" download="feed.txt"></a>

Javascript 代码

 var text = //huge string  

$("#text_feed").click(function() {
_generateFeed(text);
});

var _generateFeed = function(text) {
//some code here
$("#textLink").attr("href",
"data:attachment/txt," + encodeURIComponent(text)) [0].click();
});
};

问题:当字符串长度很小时,我可以下载数据。但是当字符串长度变长时 (> 10^5) ,我的页面崩溃了。发生这种情况是因为“encodeUriComponet(text)”无法编码大数据。

我也试过 window.open("data:attachment/txt,"+ encodeURIComponent(text));但是由于 encodeURIComponet 无法编码如此大的字符串的相同原因,我的页面再次崩溃。

另一种方法:我也在考虑使用 HTML5 File write API 将数据写入文件,但它仅在 Chrome 网络浏览器中受支持,但我需要至少在 firefox 上使用它和 Chrome 。

用例我不想通过破坏数据来进行多次下载,因为我最终需要将数据放在一个文件中。

我的目标是支持长度约为 10^6 的字符串。任何人都可以帮助我如何将这些数据下载/写入单个文件。

最佳答案

From the OP :

I solved it as below.

var _generateFeed = function(text) {
/*some code here*/
var url = URL.createObjectURL( new Blob( [text], {type:'text/plain'} ) );
$("#textLink").attr("href",url)[0].click();
};

注意事项:

  • URL.createObjectURL()与现代浏览器和 IE10+ 兼容,但它是一种不稳定的实验性技术。
  • 使用 URL.createObjectURL() 创建的对象“当您不再需要它们时,必须通过调用 URL.revokeObjectURL() 来释放它们。” - MDN

关于javascript - 无法使用javascript下载大数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30167326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com