WP7从手机读取文件

时间:2011-09-29 12:30:41

标签: .net windows-phone-7

我正在Windows Phone 7上构建应用程序,以便在wifi上传输照片。

冷杉用户选择照片(工作正常)&我将路径存储在我以后可以使用的变量中。

当我尝试发送照片时,我的流上的空白如下所示: 具体来说,当进度条发生变化时,我会启动下一次照片传输,因此线程不会并发。

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是最后一行引发的Null异常。它永远不会在第一个文件中引发,有时是第二个文件,而第三个文件也是第photoContainer.photosUri [0]仍然是我在调试器中确认的好文件路径。

1 个答案:

答案 0 :(得分:0)

我很困惑。如果您正在上传图片,为什么使用Application.GetResourceStream?该方法仅访问应用程序XAP中嵌入的资源。您不应该使用MediaLibrary.Pictures来访问手机上的图片吗?

无论哪种方式,当给定未知资源标识符时,Application.GetResourceStream都返回null。花一些时间熟悉Silverlight的相对Uris,它们与文件构建操作的关系以及如何正确地表达它们。对于嵌入式资源,相对Uri是“/assemblyName; component/folderInProject/fileName.fileExtension”,对于“Build Action = Content”文件,它将是“folerInProject / fileName.fileExtension”。