簡體   English   中英

如何將PhotoResult上傳到服務器?

[英]How to upload PhotoResult to a server?

如何從Windows Phone(其中圖像源是來自PhotoChooserTask的PhotoResult)正確上傳圖像? 我為此使用RestSharp,但它僅將一大堆零上傳到我的服務器。

這是我困擾的代碼部分:

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(這是一個PhotoStream)轉換為字節數組。

有什么想法嗎?

好的,我發現了問題所在。 看來,當您從選擇器任務取回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的幫助。 :)

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

直接讀取字節流中的內容:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM