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

前端之家收集整理的这篇文章主要介绍了angularjs – 如何获取使用Angular $http下载的文件的名称?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我编写了使用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,'');
  }

猜你在找的Angularjs相关文章