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回调中访问该文件的名称.如何从标题中获取文件的名称? 编辑响应以下答案:
值得一提的是,为了从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,''); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |