下载的文件已损坏,而不是
我试图通过webapi下载文件,除了Excel以外,它完美地工作。 excel文件下载成功,当我打开它时,它会给我一个“File is corrupt”错误。 但是,它不是腐败的。
当我在互联网上搜索时,它要求我遵循以下内容:
更改此设置后,我可以无任何问题地打开下载的文件。
我可以理解这是客户端的事情,但我不想在每台机器上都这样做。 因为,根据我对保护的理解,如果您下载任何文件,它仍然会打开,但它会处于保护模式。
但在我的情况下,它显示为“File is Corrupt”,这是对最终用户的错误解释。
我确信有很多网站可以从那里下载,并且可以按照预期的方式工作,即你仍然可以打开,但是处于保护模式。
请注意:从Excel 2013上传文件并从Excel 2010中查看。
这是我目前使用的下载代码:
private HttpResponseMessage Execute()
{
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
StreamContent streamContent = null;
if (Content == null)
{
streamContent = new StreamContent(File.OpenRead(MapPath(LocalPath)));
}
else
{
streamContent = new StreamContent(new MemoryStream(Content));
}
response.Content = streamContent;
response.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(ContentType);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = DownloadFileName,
};
return response;
}
内容类型设置为:application / vnd.openxmlformats-officedocument.spreadsheetml.sheet
今天我使用从互联网下载的文件时遇到了与保护模式相同的问题。 事实证明,根本原因是用户失去了对%TEMP%的权限(通常是c: users username AppData Local Temp)。 MS Office将该文件放在该文件夹中的沙箱中以帮助保护您。
您可以通过运行验证%TEMP%的位置
echo %TEMP%
在该用户的命令行上。