下载的文件已损坏,但不是

时间:2014-10-21 03:28:25

标签: c# .net excel asp.net-web-api2

我正在尝试通过webapi下载文件,除了Excel之外,它运行正常。 excel文件已成功下载,当我打开它时,它会给我一个"文件已损坏"错误。但是,它并没有腐败。

当我在互联网上搜索时,它要求我遵循这些:

  1. 打开Excel。
  2. 点击文件>选项。
  3. 选择信任中心>信任中心设置。
  4. 选择受保护的视图。
  5. 取消选中受保护的视图>下的所有选项行。
  6. 重新启动Excel并尝试打开Excel文档。
  7. 更改此设置后,我可以毫无问题地打开下载的文件。

    我能理解这是客户端的事情,但我不想在每台机器上做同样的事情。因为,我对保护的理解是,如果您下载任何文件,它仍会打开,但它将处于受保护模式。

    但在我的情况下它显示为"文件已损坏",这对最终用户来说是错误的解释。

    我相信有很多网站可供您下载,并且按预期工作,即您仍然可以打开但处于保护模式。

    请注意:文件从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

1 个答案:

答案 0 :(得分:0)

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

您可以通过运行

来验证%TEMP%的位置
echo %TEMP%

在该用户的命令行上。

  1. 使用Windows资源管理器浏览到该文件夹​​
  2. 右键单击Temp文件夹
  3. 转到权限标签
  4. 授予当前用户完全控制权。
相关问题