【问题标题】:Uploading zip file with POST/httpwebrequest in C#在 C# 中使用 POST/httpwebrequest 上传 zip 文件
【发布时间】:2013-08-04 05:07:36
【问题描述】:

我正在尝试来自 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?不过,我对如何在这种情况下使用它感到有些困惑,或者这甚至是我需要做的。朝着正确的方向轻推会很棒。谢谢!

【问题讨论】:

    标签: c# httpwebrequest zip


    【解决方案1】:

    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();
    

    【讨论】:

    • 嗯....下载后仍然得到一个无效的文件。我必须为我的 httpwebrequest 设置编码方法吗?我的印象是我不必这样做,因为我正在发送一个流,但是......
    • 抱歉 - 新手,这有点令人困惑。 :-/
    • 您是否在 webRequest 上设置了方法类型、内容类型、接受等选项?
    • 2/3 - method=post, contenttype=multipart/form-data(带边界)。一切都适用于非二进制文件。不过,不接受,所以也许我需要在那里指定拉链?我现在将查看语法,然后尝试报告。 :-)
    • 将接受设置为 /,据我了解,它是通配符 - zip 仍然被破坏。
    猜你喜欢
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 2016-11-29
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多