我需要在用户点击下载按钮时下载图像文件。
我从服务器返回的文件内容为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 );
但下载的文件格式不正确,无法打开。
感谢有人可以帮助我。
谢谢!
答案 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();