2013-08-01 73 views
1

如何從Windows Phone上正確上傳圖像,其中圖像源是 PhotoChooserTask的PhotoResult?我爲此使用了RestSharp,但它只有 將大量的零上傳到我的服務器。如何將PhotoResult上傳到服務器?

下面的代碼部分我有trobule:

using (MemoryStream memo = new MemoryStream()) 
{ 
    appGlobal.appData.selectedPhoto.ChosenPhoto.CopyTo(memo); 

    byte[] imgArray = new byte[appGlobal.appData.selectedPhoto.ChosenPhoto.Length]; 
    memo.Read(imgArray, 0, imgArray.Length); 

    request.AddFile("image", imgArray, "image", "image/jpeg"); 
} 

我似乎無法弄清楚如何我應該PhotoResult.ChosenPhoto(這是一個照片流)轉換爲字節數組。

有什麼想法?

回答

1

好,我發現了什麼問題是。看起來,當您從 返回PhotoResult時,選擇器任務使其成爲PhotoChooserTask或CameraCaptureTask,則流的位置未設置爲0.因此,在從中讀取字節之前,您必須手動進行設置。這裏是我的問題的固定代碼:

byte[] imgArray = new byte[(int)appGlobal.appData.selectedPhoto.ChosenPhoto.Length]; 
appGlobal.appData.selectedPhoto.ChosenPhoto.Position = 0; 
appGlobal.appData.selectedPhoto.ChosenPhoto.Read(imgArray, 0, (int)appGlobal.appData.selectedPhoto.ChosenPhoto.Length); 
appGlobal.appData.selectedPhoto.ChosenPhoto.Seek(0, SeekOrigin.Begin); 

request.AddFile("image", imgArray, "image"); 

也感謝您的幫助KooKiz。 :)

0

你在代碼中混合了兩種方法。

直接讀取流的內容的字節數組:

byte[] imgArray = new byte[appGlobal.appData.selectedPhoto.ChosenPhoto.Length]; 
appGlobal.appData.selectedPhoto.ChosenPhoto.Read(imgArray, 0, imgArray.Length); 

request.AddFile("image", imgArray, "image", "image/jpeg"); 

或者流複製到一個MemoryStream然後使用ToArray方法:

using (MemoryStream memo = new MemoryStream()) 
{ 
    appGlobal.appData.selectedPhoto.ChosenPhoto.CopyTo(memo); 

    byte[] imgArray = memo.ToArray(); 

    request.AddFile("image", imgArray, "image", "image/jpeg"); 
} 
+0

第一種方法上傳一個文件,全0,但正確的大小。 第二種方法上傳0字節。 :( – peaks