来自我网站的.7z存档已损坏:“无法将文件作为存档打开。”

时间:2013-10-16 11:33:56

标签: c# asp.net asp.net-mvc download 7zip

我知道还有其他主题,但没有任何效果。

在我的网页中,我允许下载一些配置文件

我正在使用此代码:

public ActionResult DownloadConfigurationFiles()
{
    var stream = this.HttpContext.GetSessionObj<byte[]>((int)WebVariable.ConfigurationFilesStream);
    if (stream == null)
    {
        return HttpNotFound();
    }

    this.HttpContext.ClearSessionObj((int)WebVariable.ConfigurationFilesStream);
    return File(stream, "application/x-7z-compressed", "ConfigurationFiles.7z"); // octet-stream
}

第一次完美运行,当我几秒后再试一次时,我下载了7z文件,但是当我想打开它时,我有这个错误:

enter image description here

当我进入代码时,它总是与第一次尝试时相同...所以我不知道为什么我的档案已损坏......?有没有办法验证我们构建的存档是否是一个有效的7z文件?

1 个答案:

答案 0 :(得分:1)

http://msdn.microsoft.com/en-us/magazine/cc301755.aspx

看起来像数组 - 引用类型,你应该将字节复制到流中,例如,然后删除你的会话对象。

public ActionResult DownloadConfigurationFiles()
{
    var bytes = this.HttpContext.GetSessionObj<byte[]>(idx_here);

    if (bytes != null) // check existance
    {
         var target = new MemoryStream(bytes); // <-- don't use USING!

         this.HttpContext.ClearSessionObj(idx_here);

         return File(target, mime, file_name);
    }

    return HttpNotFound();
}
认为这有帮助。