2010-06-17 5 views
1

Voici mon code pour publier le fichier. J'utilise le contrôle d'asp fileupload pour obtenir le flux de fichier.Téléchargement de fichier avec HttpWebRequest n'affiche pas le fichier

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; 

la charge de page de CrossPage.aspx i ont le code suivant

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

Je ne reçois pas le fichier dans Request.Files. Le tableau d'octets est créé. Quel était le problème avec mon HttpWebRequest?

Répondre

1

multipart/form-data ne consiste pas simplement à écrire les octets de fichiers dans le flux de requêtes. Vous devez respecter le RFC 1867. Vous pouvez jeter un oeil à this post de la façon dont cela pourrait être fait avec plusieurs fichiers.

+0

Je suis vraiment nouveau à ce sujet. Pouvez-vous s'il vous plaît expliquer ce qui manquait réellement? –