有没有办法使用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); }); 

几个问题:

  1. 我需要指定Blob的types吗? 如果是这样,我是否也需要在服务器上指定它(确定它是一个痛苦)? 我不能在两端跳过它吗?
  2. 什么导致图像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定义)