如何在 JavaScript 中检索 HttpResponseMessage 文件名

2024-04-13

我有这个 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 中定义的文件名resultsJavaScript 中的变量?


的方法返回的承诺$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(使用前将#替换为@)

如何在 JavaScript 中检索 HttpResponseMessage 文件名 的相关文章

随机推荐