2013-07-20 55 views
2

我不是很熟悉流,但是使用谷歌搜索得到了一些代码,但它不工作。我想上传一个图像到服务器,接受多部分形式的帖子 这里是我的代码,它不工作,我不知道它的正确与否。请指导C#Multipart Form post与图像上传

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

回答

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

你不需要管理标题,边界等手动

+0

如何上传的图片? – Aki003

+0

再加上没有postasync,http://prntscr.com/1gjopt – Aki003

+0

我在说System.Net.Http.HttpClient System.Net.Http.dll http://msdn.microsoft.com/en-us /library/system.net.http.httpclient.aspx –

相关问题