evt.target.result未定义,如何加密blob?

时间:2017-06-11 18:32:54

标签: javascript blob

我想加密由php文件发布的mp4文件。因此,我在blob中获取mp4文件,并且我希望将blob转换为String,因为加密数据。

我正在尝试使用带有evt.target.result的readAsBinaryString来获取blob,我不知道为什么这个输出是未定义的。请帮我解决这个问题。这是源代码!

var mp4text;
var reader = new FileReader();
var xhr = new XMLHttpRequest();
xhr.open('POST', '111', true);
xhr.responseType = "blob";
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onload = function(e) {
    if (this.status == 200) {
        var blob = new Blob([this.response], {type : "video/mp4"});
        reader.onload = function (evt) {
            mp4text = evt.target.result;
            mp4text = CryptoJS.AES.encrypt(mp4text, "test");
            mp4text = mp4text.toString()
            var myBlob = new Blob([mp4text], {type : "video/mp4"});
            var downloadUrl = URL.createObjectURL(myBlob);
            document.getElementById('myVideo').src = downloadUrl;
        }
        reader.readAsBinaryString(blob);
        console.log(this.response);
        var downloadUrl = URL.createObjectURL(blob);
        document.getElementById('myVideo').src = downloadUrl;
    } else {
        alert('Unable to download mp4.')
    }
}
xhr.send('id=1');

这是调试信息

https://mail.naver.com/file/download/each/?attachType=normal&mailSN=103&attachIndex=2&virus=1&domain=mail.naver.com&u=fnclovers'width = '310' >

1 个答案:

答案 0 :(得分:0)

您可能需要更新blob的类型。你是为第二个blob而不是第一个blob做的。