У меня есть небольшой сайт ASP.NET Core, который я размещаю в AWS lambda.У меня есть простая загрузка рабочей книги Excel, которая работает правильно при размещении в экземпляре IIS Express (запущенном из Visual Studio локально), но после публикации моего сайта в AWS Lambda данные двоичного файла повреждены.Мой код ниже:
Upload.cshtml
<h3>Please pick the workbook to upload...</h3>
<div class="row">
<div class="col-md-4">
<form method="post" enctype="multipart/form-data">
<div class="form-group">
<label asp-for="WorkbookFile" class="control-label"></label>
<input asp-for="WorkbookFile" type="file" class="form-control" style="height:auto" />
<span asp-validation-for="WorkbookFile" class="text-danger"></span>
</div>
<input type="submit" asp-page-handler="Preview" value="Preview Upload" class="btn btn-default" />
</form>
</div>
</div>
Upload.cshtml.cs
[BindProperty]
[Required]
[Display(Name = "Workbook")]
public IFormFile WorkbookFile { get; set; }
public async Task<IActionResult> OnPostPreview()
{
// Perform an initial check to catch FileUpload class
// attribute violations.
if (!ModelState.IsValid)
{
return Page();
}
byte[] fileContents;
Guid workbookId;
using (var memoryStream = new MemoryStream())
{
await WorkbookFile.OpenReadStream().CopyToAsync(memoryStream);
fileContents = memoryStream.ToArray();
workbookId = SaveWorkbook(fileContents);
}
return RedirectToPage("./UploadReview", new { id = workbookId });
}
Asописан в документации AWS (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings.html) Я добавил «multipart / form-data» в список «двоичных» типов моего шлюза Api, но это, похоже, не оказывает никакого влияния.
Снимок экрана настроек API-шлюза
Исходя из всего, что я могу найти, это должно позволить моим загруженным файлам передаваться в двоичном формате прямо в мою службу, однако полученные файлы в 2 раза больше файлов при загрузкелокально, поэтому я предполагаю, что кодировка base64 все еще применяется.
Все заголовки запроса выглядят либо как multipart / form-data, либо application / octet-stream, так что я действительно в конце моегоя не являюсь ни веб-специалистом, ни экспертом AWS. Любые предложения будут с благодарностью приняты. Спасибо!
РЕДАКТИРОВАТЬ 1. На рисунке (ссылка) показаны сообщения журнала, в которых записаны размеры в байтах []получение в ядре ASP.NETкогда работает локальный против запуска AWS.
Журнал сообщений с размерами массива
На рисунке (ссылка) ниже показаны инструменты разработчика Chrome, показывающие, что мой тип контента - multipart / form-data, а длина строки вверхс ожидаемым размером.
Chrome Dev Tools Информация