2010-02-20 5 views
2

J'essaie d'envoyer une image à un serveur en utilisant HTTP Post Multipart. Tout le reste est bon, j'ai tout l'ensemble de boundrys et d'autres choses.Envoi d'une image via POST Multipart (HTTPRequest)

Mais que dois-je faire à l'image avant la main? Dois-je le convertir en binaire? Voici les données d'en-tête de l'en-tête (en utilisant Fiddler). C'est ce que j'ai besoin de télécharger:

-----------------------------7daea2aa40c80 
Content-Disposition: form-data; name="pict"; filename="pic.jpeg" 
Content-Type: image/pjpeg 

<Binary here ... or at least I think it is> .. 
�����JFIF���������C� (lots more of this I removed) 

Un conseil?

Répondre

2

Vous pouvez utiliser la fonction File.ReadAllBytes pour lire le fichier dans un octet []. De là, vous pouvez utiliser un StreamWriter pour sortir les octets dans votre réponse. Il n'y a pas de conversion nécessaire.

+0

stuff Impressionnant! J'ai passé des heures à la chasse pour des infos liées à ça! –

0

Idéalement, vous voulez utiliser un ensemble Content-Transfering-Encoding à base64. Ensuite, vous faites simplement File.ReadAllBytes si votre fichier dans un tableau d'octets, pour ensuite utiliser la méthode Convert.ToBase64String pour convertir en base64.

Vous pouvez en lire davantage à l'article de Wikipedia MIME

Exemple

string data = 
     @"----------------------------7daea2aa40c80\n"; 
     + @"Content-Disposition: form-data; name="pict"; filename="{0}"\n" 
     + @"Content-Type: image/pjpeg\n"; 
     + @"\n{1}"; 

string filename = "pict.jpg"; 
string bytes = Convert.ToBase64String(File.ReadAllBytes(filename)); 
string request = string.Format(data, filename, bytes);