使用httpclient发送multipart文件

时间:2014-08-24 17:41:42

标签: c# android .net xamarin xamarin.android

我正在尝试使用Monodroid上的httpclient将图像发布到我的服务器。 服务器代码没问题,事实上使用Postman一切顺利。

这是我的代码:

                var req = new HttpRequestMessage (System.Net.Http.HttpMethod.Post, "http://192.168.0.50:2345/homo");

            var content = new MultipartFormDataContent ();
            var imageContent = new StreamContent (new FileStream ("my_path.jpg", FileMode.Open, FileAccess.Read, FileShare.Read));
            imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse ("image/jpeg");

            content.Add (imageContent, "image", "image.jpg");
            req.Content = content;
            await client.SendAsync (req);

当我执行此代码时,在服务器端我得到这个图像:

enter image description here

所以,就像你可以看到的那样,有些东西......但它并不是完整的文件。

你能帮助我吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

HttpClient缓冲64k,这可能等于另一侧显示的数据。要让它以块的形式发送文件,请执行以下操作:

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.TransferEncodingChunked = true;

var content = new MultipartFormDataContent ();
var imageContent = new StreamContent (new FileStream ("my_path.jpg", FileMode.Open, FileAccess.Read, FileShare.Read));
imageContent.Headers.ContentType = MediaTypeHeaderValue.Parse ("image/jpeg");
content.Add(imageContent, "image", "image.jpg");

await httpClient.PostAsync(url, content);

但是,如果您只发送一张图片,则不需要多部分...