gpt4 book ai didi

c# - 通过 HTTP 发布 Zip 文件不再在 Win 7 Zip 程序中打开

转载 作者:行者123 更新时间:2023-11-30 22:41:23 28 4
gpt4 key购买 nike

我有两段代码。一个上传 zip 文件和一个将上传保存到驱动器的服务器。我的问题是我上传了一个 zip 文件,它可以在 Windows 7 默认压缩程序中正常打开,但是当我尝试从网络服务器打开它时,它也被发布了,它不会再打开并出现错误:

Windows 无法打开该文件夹。压缩文件夹“blah”无效。

注意 1:该文件在 WinRar 或其他 zip 程序中完全可以打开。

注意 2:原始文件和服务器上的文件在磁盘上的大小完全相同,但服务器之一的大小大 200 字节

这是上传 zip 的代码:

        public static String UploadFile(String url, String filePath)
{
if (!File.Exists(filePath))
throw new FileNotFoundException();

try
{
using (var client = new WebClient())
{
byte[] result = client.UploadFile(url, filePath);

UTF8Encoding enc = new UTF8Encoding();
string response = enc.GetString(result);

return response;
}
}
catch (WebException webException)
{
HttpWebResponse httpWebResponse = webException.Response as HttpWebResponse;

return (httpWebResponse == null) ? webException.Message : httpWebResponse.StatusCode.ToString();
}
}

这是服务器上保存传入文件的代码(存在于 .NET C# aspx 页面的页面加载中):

        private void SaveZipFile()
{
string fileName;
string zipPath;

fileName = GenerateFileName();

zipPath = _hhDescriptor.GetDirectory(path => Server.MapPath(("./" + _serviceName + "\\" + path)) + "\\" + fileName + ".zip");


if (!Directory.Exists(zipPath))
{
Directory.CreateDirectory(Path.GetDirectoryName(zipPath));
}

Request.SaveAs(zipPath, false);

logger.Trace(string.Format("ManualUpload: Successfully saved uploaded zip file to {0}", zipPath));
}

如果有任何想法/或建议可能会破坏,我们将不胜感激!。我可能会随 zip 文件保存一些其他随机的东西。

更新 1:

当我在记事本中打开服务器的 zip 文件时,它包含

-----------------------8cd8d0e69a0670b Content-Disposition: form-data; name="file"; filename="filename.zip" Content-Type: application/octet-stream

所以我的问题是如何在不捕获标题信息的情况下保存 zip。

最佳答案

我认为问题出在使用 HttpRequest.SaveAs .我怀疑这是在保存整个请求,包括 HTTP header 。在二进制文件编辑器中查看该文件,我怀疑您会在开头找到 header 。

使用HttpRequest.Files获取作为请求的一部分上传的文件,以及 HttpPostedFile.SaveAs将文件保存到磁盘。

关于c# - 通过 HTTP 发布 Zip 文件不再在 Win 7 Zip 程序中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4833620/

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