【发布时间】:2016-07-12 19:02:20
【问题描述】:
我正在使用一个将一些文件压缩在一起的 ASP MVC 站点。它似乎正在工作,但是当我尝试提取文件时,我得到了
An unexpected error is keeping you from copying the file. If you continue the receive this error, you can use the error code to search for help with this problem.
enter code here
Error 0x80004005: Unspecified error
7 Zip 说 CRC 失败。文件已损坏。
似乎在编写或下载 zip 时,某些东西已损坏。我尝试了 2 种不同的方法来下载文件,结果相同。
public ActionResult DownloadFiles()
{
List<string> files = GetFileList();
using (ZipFile zip = new ZipFile())
{
foreach (string file in files)
zip.AddFile(file, string.Empty);
MemoryStream output = new MemoryStream();
zip.Save(output);
return File(output.ToArray(), "application/zip", "file.zip");
}
}
public void DownloadFiles()
{
List<string> files = GetFileList();
using (ZipFile zip = new ZipFile())
{
foreach (string file in files)
zip.AddFile(file, string.Empty);
Response.Clear();
Response.BufferOutput = false;
Response.ContentType = "application/zip";
Response.AddHeader("content-disposition", "attachment; filename=file.zip");
zip.Save(Response.OutputStream);
Response.End();
}
}
<button onclick="fn_DownloadFiles()">Download Selected</button>
function fn_DownloadSelectedFiles()
{
window.location.href = "/Files/DownloadFiles"
}
文件损坏的任何原因?
我也试过了
public ActionResult DownloadFiles(string filePaths)
{
List<string> files = GetFileList();
using (MemoryStream zipStream = new MemoryStream())
using (ZipArchive zipArchive = new ZipArchive(zipStream, ZipArchiveMode.Create, true))
{
foreach (string file in files)
{
ZipArchiveEntry entry = zipArchive.CreateEntry(file, CompressionLevel.Fastest);
using (FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (Stream entryStream = entry.Open())
fileStream.CopyTo(entryStream);
}
return File(zipStream.ToArray(), "application/zip", "files.zip"));
}
}
这样我得到 Windows 无法打开该文件夹。压缩(压缩)文件夹无效。
【问题讨论】:
-
你在使用哪个库
ZipFile? -
DotNetZip。但是,我刚刚尝试使用 System.IO.Compression,但出现了另一个错误,即 zip 无效。
-
您的
GetFileList是什么样的?我找到了这个support.microsoft.com/en-us/kb/952249。你的GetFileList()也是返回目录吗?
标签: c# asp.net-mvc asp.net-mvc-4