📅  最后修改于: 2023-12-03 15:01:40.141000             🧑  作者: Mango
在 web 应用程序中,我们经常会需要将数据以某种格式下载下来,让用户保存在本地。对于字符串类型的数据,我们可以使用 Javascript 来实现这一功能。
我们可以使用 Blob 对象来创建一个类似文件的对象,然后通过创建一个下载链接来下载该对象。具体实现过程如下:
function downloadStringAsFile(filename, text) {
var blob = new Blob([text], { type: 'text/plain' });
var url = URL.createObjectURL(blob);
var link = document.createElement('a');
link.setAttribute('href', url);
link.setAttribute('download', filename);
link.style.display = 'none';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
URL.revokeObjectURL(url);
}
这个函数接收两个参数:文件名(包含扩展名)和字符串类型的数据。它将数据封装为 Blob 对象,并使用 URL.createObjectURL 方法创建一个 URL,然后通过创建一个 a 标签来在浏览器中下载文件。
以下是一个示例,演示如何在浏览器中下载一个字符串:
downloadStringAsFile('hello.txt', 'Hello World!');
执行这个代码片段后,浏览器会自动下载一个名为 hello.txt 的文件,其中包含文本“Hello World!”。
需要注意的是,由于 Blob 对象是占用内存的,因此我们需要在使用完毕后手动销毁它,并且在创建下载链接之后立即将其从文档中移除。我们可以使用 URL.revokeObjectURL 方法来销毁 URL,避免内存泄漏。
另外,我们应该确保文件名的扩展名与数据类型相匹配,例如对于文本文件,我们应该使用 .txt 或者 .md 文件扩展名,而对于图片文件,则应该使用 .png 或者 .jpg 文件扩展名。