首页 > 解决方案 > 使用 JavaScript 保存文件

问题描述

我有以下代码从 Base64 创建文件。

var byteCharacters =atob(content);
var byteNumbers = new Array(byteCharacters.length);
for (var i = 0; i < byteCharacters.length; i++) {
    byteNumbers[i] = byteCharacters.charCodeAt(i);
}

var byteArray = new Uint8Array(byteNumbers);
var blob = new Blob([byteArray]);
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
window.navigator.msSaveOrOpenBlob(blob, 'msSaveBlob_testFile.docx');

问题是,当我执行 msSaveOrOpenBlob 时,它要求用户下载/保存文件,我想要的是自动将其保存到用户 c 驱动器。

我认为这可以在 IE 中使用 ActiveX 来完成,但即使我使用 ActiveX 保存 docx 文件,虽然它保存了文件但它说文件已损坏,但对于简单的 txt 文件它工作正常。

 var FileOpener = new ActiveXObject("Scripting.FileSystemObject");

 var FilePointer = FileOpener.OpenTextFile("C:\taqi.docx", 2, true);
 FilePointer.WriteLine("some text");
 FilePointer.Close();

即使将简单的字符串写入 docx 文件,也会给我无效文件的错误。但是如果我在记事本中打开相同的 docx 文件,我就可以看到文本。

现在我的问题是如何使用 blob 对象静默创建文件。文件可以是 (txt,docx,ppt,pdf)

任何帮助将不胜感激。

谢谢

标签: javascriptblobactivex

解决方案


出于安全目的,浏览器不允许在未经用户许可的情况下将文件保存在用户的计算机上。考虑使用 localstorage 将其保存在浏览器中: https ://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage


推荐阅读