使用utf-8字符串在javascript客户端中保存文件

时间:2015-06-10 10:56:36

标签: javascript utf-8 download blob

我需要在用户点击下载按钮时下载图像文件。

我从服务器返回的文件内容为utf-8格式。

ex:“ PNGIHDR@ v/j sRGB gAMA apHYs o d IDATx^ TՕ _ ~ ^> ~ N M :/ t Iw I^ ̜8 I@шH DC (*“.....”

(当我在此网站上传相同文件时,http://codepen.io/jduprey/details/xbale中显示的确切文件字符串)

现在我需要创建文件的blob并将其保存在客户端。

我尝试了FileSaver(https://github.com/eligrey/FileSaver.js)库,如下所示

var blob = new Blob( [ utfFileString ], { type: 'image/png' }); saveAs(blob, aData.name );

但下载的文件格式不正确,无法打开。

感谢有人可以帮助我。

谢谢!

1 个答案:

答案 0 :(得分:0)

Png文件不是utf-8编码的,请注意字符串中所有那些无效的代码序列替换字符( )。
您需要以二进制格式获取数据,例如blob或数组缓冲区。像

这样的东西
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
    if (this.readyState == 4 && this.status == 200){
        ...
        var blob = this.response; //The binary data
        ...
        saveAs(blob, aData.name);
        ...
    }
}
xhr.open('GET', 'path/to/file');
xhr.responseType = 'blob'; // the response will be a blob and not text
xhr.send();