2010-06-17 2 views
1

다음은 파일을 게시하는 코드입니다. 나는 asp fileupload 컨트롤을 사용하여 파일 스트림을 얻는다. CrossPage.aspx의 페이지로드에서 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; 

는 다음 코드

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

나는 이것에 진짜 새롭다. 실제로 실종 된 내용을 설명해 주시겠습니까? –

관련 문제