[WebAPI]使用HttpClient呼叫WebAPI以上傳檔案

  • 3605
  • 0
  • 2017-09-20

摘要:[WebAPI]使用HttpClient呼叫WebAPI以上傳檔案

 

上傳檔案到Web API中


要上傳檔案到Web API中,一個簡單直接的方式,就是把檔案夾在HttpRequest的Content中,再透過HttpPostHttpPut等方法叫用Web API。

 

所謂的把檔案夾在HttpRequest的Content中,就是把要處理的資料,包括字串、日期、數字以及檔案,包裝成一個Form的形式傳給WebAPI。實作的方式,就是使用MultipartFormDataContent。這個物件可以包裝所有繼承HttpContent的物件,最後形成multipart/form-data的MIME型別,內含在Http的通訊中。如果要包含字串、日期、數字,則使用StringContent即可,如果要處理檔案,則使用StreamContent物件。

 


            //宣告MultipartFormDataContent物件
            MultipartFormDataContent mulipartContentObj = new MultipartFormDataContent();
            //加入需傳送文串
            mulipartContentObj.Add(new StringContent("AAAA"), "key-A");
            //加入需傳送的檔案
            FileStream fs = File.Open(@"d:\temp\sample.jpg",FileMode.Open);
            mulipartContentObj.Add(new StreamContent(fs), "sample.jpg");

            //宣告HttpRequestMessage物件,並設定Content
            HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Post, "http://wepapi/");
            requestMessage.Content = mulipartContentObj;

            //使用HttpClient送出Request並取得Resoonse
            HttpClient client = new HttpClient();
            HttpResponseMessage response = client.SendAsync(requestMessage).Result;