2013-07-20 54 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 –

相關問題