首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自我网站的.7z档案被破坏了:“不能打开文件作为存档。”

来自我网站的.7z档案被破坏了:“不能打开文件作为存档。”
EN

Stack Overflow用户
提问于 2013-10-16 11:33:55
回答 1查看 596关注 0票数 0

我知道还有其他的话题,但都没有用。

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

我用的是这个代码:

代码语言:javascript
复制
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文件,但是当我想打开它时,我有以下错误:

当我进入代码时,它总是和第一次尝试相同,当它成功的时候.所以我不知道我的档案为什么腐败..?有任何方法来验证我们构建的存档是有效的7z文件吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-16 13:37:35

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

类似于数组-引用类型,您应该将字节复制到流中--例如,只有这样才能删除您的会话对象。

代码语言:javascript
复制
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();
}

我觉得这有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19402311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档