2011-09-29 101 views
1

我正在Windows Phone 7上構建一個應用程序來在wifi上傳輸照片。WP7從手機讀取文件

冷杉用戶選擇照片(工作正常)&我將路徑存儲在我可以稍後使用的變量中。

當我嘗試發送照片時,我的流如下圖所示爲空: 具體而言,我在進度條更改時啓動下一張照片傳輸,因此線程不是併發的。

public transferPage() 
{ 
    InitializeComponent(); 

    // Get smartphone unique ID 
    object DeviceUniqueID; 
    byte[] DeviceIDbyte = null; 
    if (DeviceExtendedProperties.TryGetValue("DeviceUniqueId", out DeviceUniqueID)) 
     DeviceIDbyte = (byte[])DeviceUniqueID; 
    deviceId = Convert.ToBase64String(DeviceIDbyte); 
    nbPhotos = photoContainer.photosUri.Count; 
    photoContainer.index = 0; 
    index = 0; 

    transferPhoto(); 
} 

private void ProgressBarValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
{ 
    Thread.Sleep(3000); 
    if (photoContainer.photosUri.Count > 0) 
    transferPhoto(); 
} 

private void transferPhoto() 
{ 
    string url = String.Format(photoContainer.urlTransfer, nbPhotos, deviceId); 

    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); 
    webRequest.Method = "POST"; 
    webRequest.ContentType = "application/x-www-form-urlencoded"; 
    webRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), webRequest); 
} 

private void GetRequestStreamCallback(IAsyncResult asynchronousResult) 
{ 
    HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState; 

    // End the stream request operation 
    Stream postStream = webRequest.EndGetRequestStream(asynchronousResult); 
    var fs = Application.GetResourceStream(new Uri(photoContainer.photosUri[0], UriKind.RelativeOrAbsolute)).Stream; 

A是在最後一行產生空異常。它從來沒有在第一個文件中提出,有時是第二個,總是第三個。 photoContainer.photosUri [0]仍然是我在調試器中確認的一個很好的文件路徑。

+0

嗯,發佈在msdn論壇上,他們提出問題,但不知道... – WeezzZ

+0

你能說明它是否爲空引用異常或其他類型的空異常嗎? –

回答

0

我很困惑。如果你正在上傳圖片,你爲什麼使用Application.GetResourceStream?該方法僅訪問嵌入在應用程序XAP中的資源。你不應該使用MediaLibrary.Pictures來訪問電話上的圖片嗎?

無論哪種方式,Application.GetResourceStream在給定未知資源標識符時返回null。花一些時間熟悉Silverlight的相關Uris,它們如何與文件的構建動作以及如何正確地制定它們。對於嵌入式資源,相對Uri是「/assemblyName;component/folderInProject/fileName.fileExtension」,對於「Build Action = Content」文件,它將是「folerInProject/fileName.fileExtension」。