2016-08-22 57 views
0

我試圖將圖像發佈爲byte數組。 我已經使用下面的代碼將圖像轉換爲字節,現在我想將它發佈到服務器。如何在Windows Phone中使用字節陣列[]發佈圖像

WriteableBitmap btmMap = new WriteableBitmap(bi); 
System.Windows.Media.Imaging.Extensions.SaveJpeg(btmMap, ms, 200, 200, 0, 100); 
result = ms.ToArray(); 

我該如何執行POST操作?

+0

檢查我的答案。 –

+0

我更新了我的答案檢查它。 –

回答

0

我建議將MIME multipart作爲內容類型。如果你問我,這是最適合字節數組的內容類型。實現這一點的一種方式:

public static async Task<string> Upload(byte[] data, string fileName, string uri) 
{ 
    HttpClient client = new HttpClient(); 
    HttpMultipartFormDataContent content = new HttpMultipartFormDataContent("Upload----" + DateTime.Now.ToString(System.Globalization.CultureInfo.InvariantCulture)); 
    InMemoryRandomAccessStream contentStream = new InMemoryRandomAccessStream(); 
    DataWriter dw = new DataWriter(contentStream); 
    dw.WriteBytes(data); 
    await dw.StoreAsync(); 
    await dw.FlushAsync(); 
    dw.DetachStream(); 
    contentStream.Seek(0); 
    HttpStreamContent streamContent = new HttpStreamContent(contentStream); 
    content.Add(streamContent, "MIMEFile", fileName); 
    try 
    { 
     using (var message = await client.PostAsync(new Uri(uri), content)) 
     { 
      if (message.StatusCode != HttpStatusCode.Ok) 
      { 
       return String.Format("ERROR ({0})",message.StatusCode); 
      } 
      var result = await message.Content.ReadAsStringAsync(); 
      return result; 
     } 
    } 
    catch (Exception ex) 
    { 
     return String.Format("ERROR ({0})", ex.Message); 
    } 
} 
+0

GuyMontag可以請你給我任何工作代碼或任何例子.. – user

+0

這段代碼對我來說工作得很好。你會得到什麼樣的錯誤?也許服務器 - 後端不接受MIME-Multipart ...? – GuyMontag

0

試試下面的代碼:

HttpClient httpClient = new HttpClient(); 
MultipartFormDataContent form = new MultipartFormDataContent(); 

var imageForm = new ByteArrayContent(result, 0, result.Count()); 
imagenForm.Headers.ContentType = new MediaTypeHeaderValue("image/jpg"); 

form.Add(imagenForm, "image", "nameholder.jpg"); 

HttpResponseMessage response = await httpClient.PostAsync("URL_here", form); 

response.EnsureSuccessStatusCode(); 
string result = response.Content.ReadAsStringAsync().Result; 
httpClient.Dispose(); 

希望這有助於的您可以獲取有關如何byte arry to POST傳遞到API調用的想法。

編輯:

HttpClient httpClient = new HttpClient(); 
MultipartFormDataContent form = new MultipartFormDataContent(); 

form.Add(new StringContent(UserID), "UserID"); 

var imageForm = new ByteArrayContent(result, 0, result.Count()); 
imagenForm.Headers.ContentType = new MediaTypeHeaderValue("image/jpg"); 

form.Add(imagenForm, "image", "nameholder.jpg"); 

HttpResponseMessage response = await httpClient.PostAsync("URL_here", form); 

response.EnsureSuccessStatusCode(); 
string result = response.Content.ReadAsStringAsync().Result; 
httpClient.Dispose(); 
+0

先生,我必須發佈2參數UserID和字節[] ??? – user

+0

我更新了我的答案,檢查它。請不要每次都告訴我先生。 –

+0

嗨Krunal當我打電話給上述代碼 {「message」:「缺少字符1的值」,「exception」:「flexjson.JSONException」}時,我得到以下響應} – user