2010-02-20 121 views
2

我试图使用HTTP Post Multipart将图像发送到服务器。其他一切都很好,我有所有的限制和东西。通过POST Multipart发送图像(HTTPRequest)

但是我必须先对图像做些什么?我必须将其转换为二进制文件吗?这是来自标题的标题数据(使用Fiddler)。这是我需要上传的内容:

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

有什么建议吗?

回答

2

您可以使用File.ReadAllBytes函数将文件读入一个byte []。从那里你可以使用StreamWriter将字节输出到你的响应中。没有需要转换。

+0

真棒东西阅读多了解一下!花费数小时寻找与此相关的信息! – 2010-02-20 23:33:38

0

理想情况下,您希望将Content-Transfering-Encoding设置为base64。然后你只需将File.ReadAllBytes文件放入一个字节数组中,然后使用Convert.ToBase64String方法将其转换为base64。

您可以在维基百科的文章约MIME

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