将blob内容保存到文件

时间:2015-02-04 00:05:53

标签: javascript blob

我正在开发一个用JavaScript加密/解密文件的项目。要将加密/解密文件保存在磁盘中,我正在使用blob。所有过程都正常工作,文件被加密(并且一些测试显示我也解密了)正确。我可以使用blob方法保存大型文件(之前我使用的是URI数据,当文件大小超过1MB时,它会导致浏览器崩溃错误)。但由于某些原因,我无法正确地将解密的 blob内容保存到文件中。当它是TXT文件时,我会在文件内容的开头得到它:

     data:text/plain;base64,

并继续使用base64编码的文本内容。我需要它保存为原始文件,而不是base64。当我解密exe文件时,它已损坏,所以如果我将它打开到某个文本编辑器中,我会得到:

     data:application/x-msdownload;base64,

同样,看起来该文件已保存在base64中并附加了此标头。这是我创建/保存blob内容的代码(在解密例程中):

    reader.onload = function(e){

        var decrypted = CryptoJS.AES.decrypt(e.target.result, password)
                                .toString(CryptoJS.enc.Latin1);
        var blob = new Blob([decrypted]);
        var objectURL = window.URL.createObjectURL(blob);

        if(!/^data:/.test(decrypted)){
            alert("Invalid pass phrase or file! Please try again.");
            return false;
        }

        a.attr('href','' + objectURL);
        a.attr('download', file.name.replace('.encrypted',''));

        step(4);
    };

    reader.readAsText(file);
}

如何使用原始内容保存文件?而不是header + base64编码?

0 个答案:

没有答案