有没有办法使用angular度文件下载任何types的文件?
我使用node.js和angular.js为我的应用程序,我试图通过浏览器使用Blob和fileSaver.js下载文件。
我已经在我的应用程序的其他部分使用这些来下载文本文件和PDF文件指定正确的types创buildBlob对象没有任何问题,但在当前部分我需要支持任何types的文件,我不知道如果它是可能的。
例如,我试图下载一个带有和没有type:image/png
的图像文件,结果是一个损坏的图像 – 在文本编辑器中检查它,并将其与原始文件进行比较,结果显示许多字节已被更改。
这里是我使用的代码片段:
服务器 :
fs.readFile(/* snipped file path */, function(err, data){ if(err){ /* handle error */ } else{ res.send(data); } });
客户 :
$http.get(/* endPoint URL */) .success(function(result){ var data = new Blob([result], {type: 'image/png'}); FileSaver.saveAs(data, filename); });
几个问题:
- 我需要指定Blob的types吗? 如果是这样,我是否也需要在服务器上指定它(确定它是一个痛苦)? 我不能在两端跳过它吗?
- 什么导致图像testing导致损坏的文件? 我是否缺less一些
content-type
头文件?
尝试将{contentType: 'arraybuffer'}
到GET请求中,并从Blob定义中移除types,如下所示:
$http.get(/* endPoint URL */, {contentType: 'arraybuffer'}) .success(function(result){ var data = new Blob([result]); FileSaver.saveAs(data, filename); });
( 编辑:从Blob删除冗余types定义)