代码之家  ›  专栏  ›  技术社区  ›  Gopi

使用httpwebrequest上载文件不会发布该文件

  •  1
  • Gopi  · 技术社区  · 15 年前

    这是我发布文件的代码。我使用ASP文件上载控件获取文件流。

    HttpWebRequest requestToSender = (HttpWebRequest)WebRequest.Create("http://localhost:2518/Web/CrossPage.aspx");
    requestToSender.Method = "POST";
    requestToSender.ContentType = "multipart/form-data";
    requestToSender.KeepAlive = true;
    requestToSender.Credentials = System.Net.CredentialCache.DefaultCredentials;
    requestToSender.ContentLength = BtnUpload.PostedFile.ContentLength;
    
    BinaryReader binaryReader = new BinaryReader(BtnUpload.PostedFile.InputStream);
    byte[] binData = binaryReader.ReadBytes(BtnUpload.PostedFile.ContentLength);
    
    
    Stream requestStream = requestToSender.GetRequestStream();
    requestStream.Write(binData, 0, binData.Length);
    requestStream.Close();
    
    HttpWebResponse responseFromSender = (HttpWebResponse)requestToSender.GetResponse();
    string fromSender = string.Empty;
    
    using (StreamReader responseReader = new StreamReader(responseFromSender.GetResponseStream()))
     {
      fromSender = responseReader.ReadToEnd();
     }
    XMLString.Text = fromSender;
    

    在crosspage.aspx的页面加载中,我有以下代码

     NameValueCollection postPageCollection = Request.Form;
    
     foreach (string name in postPageCollection.AllKeys)
      {
       Response.Write(name + " " + postPageCollection[name]);
      }
    
     HttpFileCollection postCollection = Request.Files;
     foreach (string name in postCollection.AllKeys)
     {
       HttpPostedFile aFile = postCollection[name];
       aFile.SaveAs(Server.MapPath(".") + "/" + Path.GetFileName(aFile.FileName));
     }
     string strxml = "sample";
    
     Response.Clear();
     Response.Write(strxml);
    

    我没有在request.files中获取文件。将创建字节数组。我的httpwebrequest出了什么问题?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Community CDub    8 年前

    multipart/form-data 不是简单地将文件字节写入请求流。你需要尊重 RFC 1867 . 你可以看看 this post 关于如何使用多个文件来完成此操作。