使用HttpWebRequest进行文件上传不会发布文件

时间:2010-06-17 11:26:18

标签: asp.net file-upload httpwebrequest

这是我发布文件的代码。我使用asp fileupload控件来获取文件流。

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 个答案:

答案 0 :(得分:1)

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