gpt4 book ai didi

c# - ZipArchive 在实时服务器上提供无效文件

转载 作者:行者123 更新时间:2023-11-30 15:24:31 25 4
gpt4 key购买 nike

我在处理程序中使用 ZipArchive 来为使用内存流和 Web 处理程序的用户提供服务。在我将应用程序上传到实时站点之前,这在本地一直有效。

这是我的代码。

using (ZipArchive newArchive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
newArchive.CreateEntryFromFile(fileName, Path.GetFileName(fileName));
if (File.Exists(acRefFile))
{
newArchive.CreateEntryFromFile(acRefFile,
newACRefName + Path.GetExtension(acRefFile));
}
else
{
SystemLogManager sysLogMgr = new SystemLogManager();
sysLogMgr.AddErrorMessage(acRefFile, "File not found");
}
if (File.Exists(exRefFile))
{
newArchive.CreateEntryFromFile(exRefFile,
newExRefName + Path.GetExtension(exRefFile));
}
else
{
SystemLogManager sysLogMgr = new SystemLogManager();
sysLogMgr.AddErrorMessage(exRefFile, "File Not Found");
}
if (File.Exists(exRef2File))
{
newArchive.CreateEntryFromFile(exRef2File,
newExRef2Name + Path.GetExtension(exRef2File));
}
}
memoryStream.Position = 0;
byte[] bytes = memoryStream.GetBuffer();
context.Response.Buffer = true;
context.Response.Clear();
context.Response.ContentType = "application/zip";
context.Response.AddHeader("content-disposition",
string.Format("attachment; filename =app_{0}_{1}.zip", appForm.Cand_sno,
appForm.App_year));
context.Response.BinaryWrite(bytes.ToArray());
context.Response.Flush();

下图显示了下载的 zip 文件和生成的错误。 Zip error

那么代码中是否有任何错误或我可以在服务器端尝试的东西?

更新 1:根据收到的评论,我尝试将 zip 文件直接添加到服务器上。出现与 zip 中“损坏”相同的问题。

更新 2:进一步调查我现在发现 zip 文件在使用 7zip 而不是标准的 Windows 提取时打开。当右键单击提取所有消息时,说明 zip 为空。

谢谢

最佳答案

所以这个问题的解决方法只是将 byte[] bytes = MemoryStream.GetBuffer(); 更改为 byte[] bytes = MemoryStream.ToArray(); 这只是获取已使用的字节,而不是缓冲区添加的额外字节。

关于c# - ZipArchive 在实时服务器上提供无效文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32734387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com