如何解决AWS无服务器Excel下载
我正在尝试使用下面部署在AWS中的Lambda功能代码(ASP .Net Core 3.1)下载Excel文件。但是我遇到了文件损坏的问题。
ReportController.cs:
[HttpGet]
public IActionResult Get()
{
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];
worksheet.Zoom = 80;
Style titleheaderStyle = worksheet.Workbook.CreateStyle();
titleheaderStyle.Font.Name = "Calibri";
titleheaderStyle.Font.Size = 13;
titleheaderStyle.Font.IsBold = true;
titleheaderStyle.Font.IsItalic = true;
titleheaderStyle.HorizontalAlignment = TextAlignmentType.Left;
titleheaderStyle.VerticalAlignment = TextAlignmentType.Top;
worksheet.Cells[0,0].PutValue("Report");
MemoryStream ms = new MemoryStream();
workbook.Save(ms,SaveFormat.Xlsx);
byte[] b1 = ms.ToArray();
ms.Flush();
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.Headers.Add("Content-Disposition","attachment; filename=testfile1.xlsx");
Response.Body.WriteAsync(b1);
return Ok();
}
LambdaEntryPoint.cs:
protected override void Init(IWebHostBuilder builder)
{
RegisterResponseContentEncodingForContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",ResponseContentEncoding.Base64);
builder.UseStartup<Startup>();
}
我们已在AWS API Gateway中将二进制媒体类型更新为“ application / vnd.openxmlformats-officedocument.spreadsheetml.sheet”,并在GET集成响应中将“内容处理”设置为“转换为二进制(CONVERT_TO_BINARY)”,并更新了200状态方法响应。 “应用程序/vnd.openxmlformats-officedocument.spreadsheetml.sheet”内容类型。如何解决以上问题?
更新:
[HttpGet]
public IActionResult Get()
{
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];
worksheet.Zoom = 80;
Style titleheaderStyle = worksheet.Workbook.CreateStyle();
titleheaderStyle.Font.Name = "Calibri";
titleheaderStyle.Font.Size = 13;
titleheaderStyle.Font.IsBold = true;
titleheaderStyle.Font.IsItalic = true;
titleheaderStyle.HorizontalAlignment = TextAlignmentType.Left;
titleheaderStyle.VerticalAlignment = TextAlignmentType.Top;
worksheet.Cells[0,SaveFormat.Xlsx);
byte[] b1 = ms.ToArray();
ms.Flush();
return new FileContentResult(b1,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
{
FileDownloadName = "testfile1.xlsx"
};
}
解决方法
在您的LambdaEntryPoint类中,尝试通过调用application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
方法将内容类型RegisterResponseContentEncodingForContentEncoding
注册为base64编码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。