从HttpResponseMessage获取Excel文件
我正在做一个ASP.NET Core 2.2项目,我需要用我的浏览器下载我的Excel,但是当我正在做我的请求时,我只是得到一些Json。
我的Excel在stream中,stream不是空的!
这是我的代码:
HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.OK); var streamContent = new StreamContent(stream); streamContent.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); streamContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); streamContent.Headers.ContentDisposition.FileName = "Excel.xlsx"; message.Content = streamContent; return message;
这里是我得到的回应:
{"version":{"major":1,"minor":1,"build":-1,"revision":-1,"majorRevision":-1,"minorRevision":-1},"content":{"headers":[{"key":"Content-Type","value":["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"]},{"key":"Content-Disposition","value":["attachment; filename=Excel.xlsx"]}]},"statusCode":200,"reasonPhrase":"OK","headers":[],"requestMessage":null,"isSuccessStatusCode":true}
那么,有人知道我可以用HttpResponseMessage发送我的Excel文件吗?
我可以使用Filesteam下载我的Excel文件,但我不想用这种方式,因为我不能得到任何HTTP错误消息(错误的请求,内部等)但是如果有人知道我可以如何发送消息返回Filestream,我会很高兴看到你的build议!
编辑:这是当我返回一个FileStreamResult的代码
return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
您可以从Stream读取Byte数组,然后返回FileContentResult。
using System.Net.Http; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; namespace DemoWebCore.Controllers { [Route("api/[controller]")] public class FilesController : Controller { // GET api/files/sample.png [HttpGet("{fileName}")] public async Task<ActionResult> Get(string fileName) { var cd = new System.Net.Http.Headers.ContentDispositionHeaderValue("inline") { FileName = "Excel.xlsx" }; Response.Headers.Add("Content-Disposition", cd.ToString()); StreamContent stream = YOUR_STREAM_SOURCE byte[] content = await stream.ReadAsByteArrayAsync(); return File(content, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); } } }
async Task<bool> DownloadDocument(string authorizationToken, string fileName) { try { string url = "yoururl": using (var httpClient = new HttpClient()) { httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authorizationToken); HttpResponseMessage response = await httpClient.GetAsync(url); await ReadAsFileAsync(response.Content, fileName, true); return true; } } catch (Exception ex) { Response.Write(ex.Message); return false; }
- GetChartImageUrl从Excel服务Sharepoint错误
- 我能否从ASP.NET页面下载内存stream中创build的Excel文件?
- 在Microsoft Excel中打开select并从ASP.NET Web窗体应用程序发回到服务器。 服务器上没有SharePoint
- 当使用c#从Excel中读取大于12位的数字时,数字被转换为零
- 以编程方式在Excel单元格上设置date格式
- 如何将Excel文件下载到用户的下载文件夹?
- 所以我真的不能使用Excel对象模型来使用服务器端?
- 如何使用ASP.NET,VB或C#填充Excel模板?
- 使用File.WriteAllText()函数创build后,无法读取excel文件