加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如何获取使用Angular $http下载的文件的名称?

发布时间:2020-12-17 09:41:46 所属栏目:安全 来源:网络整理
导读:我编写了使用Angular $http的代码下载文件.该文件的名称未在URL中指定. URL包含文件的唯一标识符,该标识符是从应用程序外部获取的. 当$http.get(myUrl)被调用时,一切正常;该文件被检索,我可以在我的回调处理程序中访问它,但我看不到如何获取文件的名称.用Fid
我编写了使用Angular $http的代码下载文件.该文件的名称未在URL中指定. URL包含文件的唯一标识符,该标识符是从应用程序外部获取的.

当$http.get(myUrl)被调用时,一切正常;该文件被检索,我可以在我的回调处理程序中访问它,但我看不到如何获取文件的名称.用Fiddler捕获原始响应,我看到:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 54
Content-Type: application/octet-stream
Server: Microsoft-IIS/8.5
Access-Control-Allow-Origin: http://www.example.com/getFile/12345
Access-Control-Allow-Credentials: true
Content-Disposition: attachment; filename=testfile.txt
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri,09 Oct 2015 20:25:49 GMT

Lorem ipsum dolar sit amet!  The contents of my file!

从上面可以看出,服务器在“Content-Disposition”中发送文件的名称,但是我还没有发现在我的Angular回调中访问该文件的名称.如何从标题中获取文件的名称?

编辑响应以下答案:
我以前应该提到过我已经尝试过response.headers().它返回Object {content-type:“application / octet-stream”,cache-control:“private”},所以我仍然不会因为某种原因得到Content-Disposition. response.headers(‘Content-Disposition’)返回null.

值得一提的是,为了从HTTP头获取文件名,提取Content-Disposition头是不够的.
您仍然需要从此头值获取filename属性.

返回的头值示例:attachment;文件名= “myFileName.pdf”.

下面的函数将提取filename =“myFileName.pdf”,然后提取“myFileName.pdf”,最后删除额外的引号以获取myFileName.pdf.

您可以使用下面的代码段:

function getFileNameFromHttpResponse(httpResponse) {
      var contentDispositionHeader = httpResponse.headers('Content-Disposition');
      var result = contentDispositionHeader.split(';')[1].trim().split('=')[1];
      return result.replace(/"/g,'');
  }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读