我有这个 WebAPI 方法,它需要一个自定义对象MyType
作为输入并据此生成 PDF。 PDF 文件作为HttpResponseMessage
。请注意,我指定了文件名response.Content.Headers.ContentDisposition.FileName
:
ASP.NET WebAPI
[Route("")]
public HttpResponseMessage Get([FromUri]MyType input)
{
var pdfContent = PdfGenerator.Generate(input);
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = pdfContent;
response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = "MyCustomFileName.pdf"
return response;
}
在 AngularJS 中,我使用以下命令获取文件文件保存器.js https://github.com/eligrey/FileSaver.js/像这样:
$http.get("api/pdf/", {
params: {
"type": myObject
},
responseType: 'arraybuffer'
}).then(function (results) {
var data = results.data;
var file = new Blob([data], { type: 'application/pdf' });
saveAs(file, 'filename.pdf');
}, function (results) {
console.log(results);
});
它工作正常,但我在 WebAPI 和 JavaScript 中定义文件名。有没有办法,我可以检索 WebAPI 中定义的文件名results
JavaScript 中的变量?
的方法返回的承诺$http
作为参数传递具有以下属性的对象(ref https://docs.angularjs.org/api/ng/service/%24http):
- data – {string|Object} – 使用转换函数转换的响应主体。
- status – {number} – 响应的 HTTP 状态代码。
- headers – {function([headerName])} – 标头 getter 函数。
- config – {Object} – 用于生成请求的配置对象。
- statusText – {string} – 响应的 HTTP 状态文本。
So results.headers('Content-Disposition')
会给你的价值Content-Disposition
标头。您将必须进行一些简单的解析才能获得实际的文件名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)