我正在尝试通过webapi下载文件,除了Excel之外,它运行正常。 excel文件已成功下载,当我打开它时,它会给我一个"文件已损坏"错误。但是,它并没有腐败。
当我在互联网上搜索时,它要求我遵循这些:
更改此设置后,我可以毫无问题地打开下载的文件。
我能理解这是客户端的事情,但我不想在每台机器上做同样的事情。因为,我对保护的理解是,如果您下载任何文件,它仍会打开,但它将处于受保护模式。
但在我的情况下它显示为"文件已损坏",这对最终用户来说是错误的解释。
我相信有很多网站可供您下载,并且按预期工作,即您仍然可以打开但处于保护模式。
请注意:文件从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;
}
内容类型设置为: 应用/ vnd.openxmlformats-officedocument.spreadsheetml.sheet
答案 0 :(得分:0)
今天我在保护模式下遇到了从互联网上下载文件的问题。事实证明,根本原因是用户已经失去了对%TEMP%的权限(通常是c:\ users \ username \ AppData \ Local \ Temp)。 MS Office将文件放在该文件夹的沙箱中以帮助保护您。
您可以通过运行
来验证%TEMP%的位置echo %TEMP%
在该用户的命令行上。