2013-08-01 2 views
1

이미지 소스가 인 Windows Phone에서 이미지를 제대로 업로드하려면 어떻게해야합니까? PhotoChooserTask의 PhotoResult? 이 RestSharp 사용하고 있지만 그것은 내 서버에 제로의 큰 무리를 업로드합니다.PhotoResult를 서버에 업로드하는 방법은 무엇입니까?

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을 변환 할 수 있겠 방법을 알아낼 수없는 것 :

는 여기에 내가 가진 trobule이 코드 부분입니다.

의견이 있으십니까?

답변

1

가 좋아 내가 발견 무엇 문제가있었습니다. 에서 PhotoResult를 다시 가져 와서 PhotoChooserTask 또는 CameraCaptureTask가되도록 선택기 작업을하면 스트림의 위치가 0으로 설정되지 않은 것 같습니다. 따라서 바이트를 읽으려면 수동으로 설정해야합니다. 도움 KooKiz에 대한

또한
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"); 

감사 : 여기에 내 질문에 대한 고정 코드입니다. :)

0

코드에서 두 가지 접근 방식을 혼용합니다.

직접 바이트 배열 스트림의 내용을 읽어 : 다음 ToArray 방법을 사용

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을에 스트림을 복사

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

관련 문제