通过js向授权的asp.net web api请求XLSX文件
Posted
技术标签:
【中文标题】通过js向授权的asp.net web api请求XLSX文件【英文标题】:Requesting XLSX file through js to authorized asp.net web api 【发布时间】:2019-01-26 21:57:14 【问题描述】:我有 ajax 调用我的 web api 来获取调用时生成的 xlsx 文件。 xlsx 文件位于我知道是正确的内存流中,因为我直接从服务器下载它并且没有问题。但是,当我尝试通过浏览器下载文件时,它说该文件无效。我正在使用downloadjs下载数据。
我如何返回 Stream
public HttpResponseMessage Function_Name()
var stream = getStream();
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType =
new MediaTypeHeaderValue("application/octet-stream");
return result;
我如何获得信息流
$.ajax( url: "urlToData", headers:
'Authorization': 'Authorization'
,
success: function (data) download(data, "test.xlsx");
);
当我运行此代码时,我得到一个文件,但是该文件没有在 excel 中读取。该文件也是 15.3 KB,其中直接从服务器下载的功能文件实际上是 10.0kb
【问题讨论】:
【参考方案1】:我感到绝望并尝试了这个:http://www.henryalgus.com/reading-binary-files-using-jquery-ajax/
当我使用 XMLHttpRequest() 时,它工作正常。
var xhr = new XMLHttpRequest()
xhr.open('GET', 'url', true);
xhr.setRequestHeader('Authorization', 'Authorization');
xhr.responseType = 'blob';
xhr.onload = function(e)
if(this.status == 200)
var blob = this.response;
download(this.response, "test.xlsx")
xhr.send();
【讨论】:
以上是关于通过js向授权的asp.net web api请求XLSX文件的主要内容,如果未能解决你的问题,请参考以下文章
如何从 ASP.NET 核心 mvc 向 asp.net 核心中的 Web API 发出 PUT 请求?
此请求的授权已被拒绝 - 桌面到 ASP.NET Web API
asp.net core 2.0 web api基于JWT自定义策略授权