带有图片上传的C#Multipart Form帖子

时间:2013-07-20 17:53:31

标签: c# winforms file-upload multipartform-data

我对溪流不是很熟悉,但谷歌搜索得到了一些代码,但它不起作用。我想将图像上传到接受多部分帖子的服务器 这是我的代码,它不工作,我不知道它是否正确。请指导

 MemoryStream stream;
                            using ( stream = new MemoryStream())
                            {
                                using (var writer = new StreamWriter(stream))
                                {
                                    writer.Write("multipart/form-data; boundary=---------------------------" + ak);
                                    if (image_path1.ToLower().Contains("png"))
                                    {
                                        writer.Write("Content-Disposition: form-data;");
                                        writer.Write("name=img;");
                                        writer.Write("filename="+name+";");
                                        writer.Write("Content-Type: image/png");
                                    }
                                    else
                                    {
                                        writer.Write("Content-Disposition: form-data;");
                                        writer.Write("name=img;");
                                        writer.Write("filename=" + name + ";");
                                        writer.Write("Content-Type: image/jpeg");
                                    }
                                    writer.Flush();

                                    var file1 = File.ReadAllBytes(image_path1);
                                    stream.Write(file1, 0, file1.Length);
                                   // stream.Flush();
                                }
                            }

接下来我甚至不知道如何发布它,对于正常的帖子我使用像这样

string response = client.Post(domain, post_string);

我必须创建这样的请求http://prntscr.com/1gje7l 和函数是http://prntscr.com/1gjefr

1 个答案:

答案 0 :(得分:3)

HttpClient方法PostAsync接受HttpContent个对象。

你可以像这样使用它:

using(var f = System.IO.File.OpenRead(@"F:\test.html"))
{
      var client = new HttpClient();
      var content = new StreamContent(f);
      var mpcontent = new MultipartFormDataContent();
      content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
      mpcontent.Add(content);   
      await client.PostAsync("http://ya.ru", mpcontent);
}

您无需手动管理标题,边界等