2010-06-17 77 views
1

這是我的代碼發佈文件。我使用asp文件上傳控件來獲取文件流。與HttpWebRequest文件上傳不張貼文件

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

multipart/form-data不包括簡單地將文件字節寫入請求流。你需要尊重RFC 1867。你可以看看this post這個如何用多個文件完成。

+0

我對此很新。你能解釋一下實際上缺少的東西嗎? – 2010-06-17 11:53:23