通过POST Multipart(HTTPRequest)发送图像

时间:2010-02-20 20:09:11

标签: c# httprequest http-post

我正在尝试使用HTTP Post Multipart将图像发送到服务器。其他一切都很好,我有所有的设置和东西。

但我手头的图像怎么办呢?我必须将其转换为二进制文件吗?这是标题中的标题数据(使用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 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

您可以在Wikipedia关于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);