下载的文件是损坏的不是

我试图通过webapi下载一个文件,除了Excel以外,它完美的工作。 excel文件下载成功,当我打开相同的,它给了我一个“文件已损坏”的错误。 但是,这不是腐败。

当我在互联网上search它是要求我遵循这些:

  1. 打开Excel。
  2. 点击文件>选项。
  3. select信任中心>信任中心设置。
  4. select受保护的视图。
  5. 取消选中受保护视图>确定下的所有选项。
  6. 重新启动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; } 

内容types设置为:application / vnd.openxmlformats-officedocument.spreadsheetml.sheet

今天我用保护模式也有同样的问题,从互联网上下载文件。 原来的原因是用户已经失去了对%TEMP%的权限(通常是c:\ users \ username \ AppData \ Local \ Temp)。 MS Office将该文件放置在该文件夹的沙箱中以帮助保护您。

您可以通过运行validation%TEMP%的位置

 echo %TEMP% 

在该用户的命令行上。

  1. 使用Windows资源pipe理器浏览到该文件夹
  2. 右键单击Temp文件夹
  3. 转到权限选项卡
  4. 授予当前用户完全控制。