c# - 在 C# 中使用 POST/httpwebrequest 上传 zip 文件

标签 c# httpwebrequest zip

我正在尝试来自 http://www.paraesthesia.com/archive/2009/12/16/posting-multipartform-data-using-.net-webrequest.aspx 的代码通过 httpwebrequest 进行 POST。

如果我用文本文件尝试同样的代码,没问题。但是,如果我使用 zip 文件执行此操作,则在重新下载该文件时会提示它不是有效的 zip。我假设 zip 部分可能以文本形式而不是二进制形式上传。但是,该页面确实说“可以在此处包含二进制内容。不要对其进行 base-64 编码或其他任何编码,只需将其流式传输。”但这似乎不适用于给定的代码。我假设我必须将读取文件的部分更改为流:

  using (FileStream fileStream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read))
  {
    byte[] buffer = new byte[1024];
    int bytesRead = 0;
    while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
    {
      stream.Write(buffer, 0, bytesRead);
    }
    fileStream.Close();
  }

也许使用 BinaryReader?不过,我对如何在这种情况下使用它感到有点困惑,或者它是否是我需要做的。朝着正确的方向轻推会很棒。谢谢!

最佳答案

BinaryReader 确实可以工作:

FileInfo fInfo = new FileInfo(file.FullName);
// 
long numBytes = fInfo.Length;

FileStream fStream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read);

BinaryReader br = new BinaryReader(fStream);

byte[] bdata = br.ReadBytes((int)numBytes);

br.Close();

fStream.Close();

// Write bdata to the HttpStream
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("url-here");
// Additional webRequest parameters settings.
HttpStream stream = (Stream)webRequest.GetRequestStream();
stream .Write(bdata, 0, bdata.Length);
stream.Close();

HttpWebResponse response = (HttpWebRewponse)webRequest.GetResponse();

关于c# - 在 C# 中使用 POST/httpwebrequest 上传 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18025186/

相关文章:

c# - 您将如何在下拉列表中将特定国家/地区置于首位?

c# - ExecutenonQuery 不工作

c# - 调用 Google GCM 时未经授权

c# - 服务器违反了协议(protocol)。 Section=ResponseHeader Detail=CR 必须跟在 LF 之后,在 WinForms 中?

javascript - 在脚本中使用 ZipFile java 类读取 zip 文件内容

c# - 为什么不总是处理?

C# 或 C++ 沙盒程序集

c# - 在 C# 中模仿 Fiddler 的 Compose->Raw 功能

java - 如何在 java 中压缩或解压缩时向 zip 实用程序添加进度条?

Github 下载文件夹为 zip