在本地环境(Windows 7,Kestrel,AspNetCore 2.0)中,一切都很好,没有错误。但是,当我使用API网关作为LAMBDA功能部署到AWS时,我得到了下面的错误。
[HttpPost]
[Route("Temp")]
public IActionResult PostTest(IFormFile file)
{
using (SpreadsheetDocument document = SpreadsheetDocument.Open(file.OpenReadStream(), false))
{
}
return Ok();
}
Unknown error responding to request: FileFormatException:
System.IO.FileFormatException: File contains corrupted data.
at System.IO.Packaging.ZipPackage..ctor(Stream s, FileMode packageFileMode, FileAccess packageFileAccess)
at System.IO.Packaging.Package.Open(Stream stream, FileMode packageMode, FileAccess packageAccess)
at DocumentFormat.OpenXml.Packaging.OpenXmlPackage.OpenCore(Stream stream, Boolean readWriteMode)
at DocumentFormat.OpenXml.Packaging.SpreadsheetDocument.Open(Stream stream, Boolean isEditable, OpenSettings openSettings)
at api.Controllers.SKUController.Post2Async(IFormFile file) in \lambda\api\Controllers\SKUController.cs:line 72
at lambda_method(Closure , Object , Object[] )
at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)
at Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker.<InvokeActionMethodAsync>d__12.MoveNext()
我可以将excel发布到AWS上,(甚至可以使用系统io读取它),但是SpreedsheetDocument.Open的方法无法正常工作。 (还检查了我可以将文本文件写入临时目录,似乎也可以工作)
答案 0 :(得分:0)
检查您尝试打开的Excel文件是否受密码保护。如果是,请删除密码保护,重新保存并尝试再次读取该文件。
我发现an MSDN post用户遇到了同样的错误。在他们的研究之后,确定通过使用OpenXml读取受密码保护的excel 2007文件可能导致File contains corrupted data.
异常。
答案 1 :(得分:0)