Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用angularJS中的Blob方法破坏下载的文档大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
下载一个曾经在我的应用程序中正常工作的文件,直到我将Angular升级到最新版本.即使是现在,该文件也已下载,但问题是它已损坏.上传文件工作正常,如果我们签入文件服务器,文件将完好无损.但下载后,我的文件已损坏.

Html

<td data-title="''">

    <a tooltip="Download CV" ng-hide="!talent.resumePath" tooltip-trigger tooltip-animation="false" tooltip-placement="bottom" ng-click="downloadResume(talent.id)" data-placement="top" data-toggle="tooltip" data-original-title="resume">
        <img src="../../img/DownloaDicon.png" /></a>
</td>

控制器:

downloadResume: function(employeEID) {
    return apiservices.getFileFromTalentPool('/talentpool/resume?id=' + employeEID)
 },

其中,getFileFromTalentPool是:https://hastebin.com/yivaterozi.js

终点:

public FileResult GetResume(int id) {
    var result = _services.GetResume(id);
    if (result != null) {
        httpContext.Response.ContentType = result.ContentType;
        httpContext.Response.Headers["Access-Control-Expose-Headers"] = "Filename";
        httpContext.Response.Headers["Filename"] = result.FileDownloadName;
    }
    return result;
}

通常我下载Doc文件.我尝试使用记事本文件来查看它是否相同.奇怪的是,我注意到我能够打开记事本文件,但其内容被操作为[object Object].但对于Doc文件,它只显示http://oi68.tinypic.com/2i11m9y.jpg

我怎样才能解决这个问题?

看起来 https://hastebin.com/yivaterozi.js代码已经从使用不推荐的$http.success()方法更新为当前的$http.then(). Promise’成功回调函数(在then方法中)只接收一个对象参数: https://docs.angularjs.org/api/ng/service/ $http.不成功的“成功”方法获得了更多参数(数据,状态,@L_197_28@)和已包含原始数据的数据.使用then()时,数据位于response的data属性下,因此请尝试将$http调用更改为:
$http({
  method: 'GET',cache: false,url: fileurl,responseType:'arraybuffer',headers: {
    'Authorization': "Bearer " + $rootScope.userInfo.access_token,'Access-Control-Allow-Origin': '*'
  }
}).then(function (data) {
  var octetStreAMMime = 'application/octet-stream';
  var success = false;

  // Get the headers
  var headers = data.headers();
    ...
    ...

请注意,从数据对象而不是第三个参数中获取正确的@L_197_28@(只需添加var,因为我们删除了空参数).
现在,在您使用数据的每个位置,将其更改为data.data,如:

// Try using msSaveBlob if supported 
var blob = new Blob([data.data],{ type: contentType });

或者只是将参数数据更改为响应并添加var data = response.data; anf修改header getter to headers = response.headers();:

$http({
  method: 'GET','Access-Control-Allow-Origin': '*'
  }
}).then(function (responsE) {
  var octetStreAMMime = 'application/octet-stream';
  var success = false;

  // Get data
  var data = response.data;

  // Get the headers
  var headers = response.headers();
    ...
    ...

大佬总结

以上是大佬教程为你收集整理的使用angularJS中的Blob方法破坏下载的文档全部内容,希望文章能够帮你解决使用angularJS中的Blob方法破坏下载的文档所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。