[英]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.