使用JavaScript保存文件

时间:2019-07-19 07:26:02

标签: javascript blob activex

我有以下代码从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)

任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

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