2014-09-25 89 views
0

我正在使用PhoneGap爲Windows,Android和iOS平臺開發應用程序。如何從Windows或PhoneGap的HTML或Javascript中訪問獨立的存儲文件

我有一個問題,需要你們的專家協助。

我爲Windows Phone創建了一個插件。插件基本上是從URL下載圖像並存儲在Downloads文件夾下的獨立存儲文件夾中,這是成功的。

現在我的問題是有沒有辦法從JavaScript訪問孤立的存儲文件。比如我有一個下載圖像並存儲在獨立存儲(「下載/ logo.png)現在我有這個圖片設置爲我的HTML圖像源。如<img src="ms-appdata:///local/Downloads/logo.png"/>

,但不能得到成功。我已經嘗試沒有運氣的幾個方法。

我一直在使用下面的代碼保存在獨立存儲文件。

//This code is working fine for saving image from url to isolated storage 
    IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication(); 
       //Create directory if does not exists 
       if (ISF.DirectoryExists(IMAGE_FOLDER_PATH) == false) 
       { 
        Debug.WriteLine("Directory created"); 
        ISF.CreateDirectory(IMAGE_FOLDER_PATH); 
       } 

       WebClient client = new WebClient(); 
       string modeuleName = hamBurgerMenu[MODULENAME_COLUMN_INDEX]; 
       client.OpenReadCompleted += (s, e) => 
       { 
        if (e.Error == null) 
        { 
         Deployment.Current.Dispatcher.BeginInvoke(() => 
         { 
          using (var isoStore = IsolatedStorageFile.GetUserStoreForApplication()) 
          { 
           string fullPath = Path.Combine(IMAGE_FOLDER_PATH, modeuleName + ".png"); 
           var bi = new BitmapImage(); 
           bi.SetSource(e.Result); 
           var wb = new WriteableBitmap(bi); 
           using (var isoFileStream = isoStore.CreateFile(fullPath)) 
           { 
            var width = wb.PixelWidth; 
            var height = wb.PixelHeight; 
            Extensions.SaveJpeg(wb, isoFileStream, width, height, 0, 100); 
           } 
          } 
         }); 
        } 
       }; 
       client.OpenReadAsync(new Uri(imageURL, UriKind.Absolute)); 

我曾嘗試以下解決方案,但無法獲得成功的。

<img src="file:///C:|/Data/Users/DefApps/AppData/{9DB..............0CC}/local/Downloads/logo.png"/> 
       <img src="ms-appdata:///local/Downloads/logo.png"/> 
       <img src="ms-appx:///Downloads/logo.png"/> 

您的意見或建議將不勝感激! 謝謝& Regards, Imdadhusen

+0

你解決了這個問題嗎?我面對同一個... – eeadev 2014-10-27 17:35:12

+1

是的。經過大量的研發工作,我已經解決了這個問題。請參閱下面的解決方案提到的問題。希望這會幫助你。 – imdadhusen 2014-12-02 06:59:06

+0

謝謝。你可能會在github上分享你的插件 – eeadev 2014-12-02 08:53:57

回答

1

我已經使用下面的代碼解決了該問題。發佈答案的目的是爲了幫助其他人尋找相同的答案。

現在我在應用程序的本地文件夾中保存下載的圖像。

以下功能將從實時URL下載圖片。

private void downloadImage(string imageURL, string[] hamBurgerMenu) 
     { 
      string ext = Path.GetExtension(imageURL.Trim()); 
      try 
      { 
       WebClient client = new WebClient(); 
       client.OpenReadCompleted += (s, e) => 
       { 
        if (e.Error == null) 
        { 
         Deployment.Current.Dispatcher.BeginInvoke(async() => 
         { 
          await saveImage(e.Result, imageURL); 
         }); 
        } 
        else 
        { 
         //Download Image Not Found 
        } 
       }; 
       client.OpenReadAsync(new Uri(imageURL, UriKind.Absolute)); 
      } 
      catch (Exception e) 
      { 
       //Download Error 
      } 
     } 

我現在用下面的函數

// Save a downloaded images to the app’s local folder. 
     public async Task saveImage(Stream photoToSave, string imageURL) 
     { 
      StorageFile photoFile = null; 
      try 
      { 
       string ext = Path.GetExtension(imageURL.Trim()); 
       photoFile = await localFolder.CreateFileAsync(ext, CreationCollisionOption.ReplaceExisting); 
       using (var photoOutputStream = await photoFile.OpenStreamForWriteAsync()) 
       { 
        await photoToSave.CopyToAsync(photoOutputStream); 
       } 
      } 
      catch (Exception e) 
      { 
       //Error while saving file 
      } 
     } 

現在保存下載的圖像,我們可以使用下面的路徑在HTML網頁或客戶端腳本訪問該文件

重要: - <APP_ID>例如{8A027331-C7348-182D188-8A02473-1247801}應該替換爲您的應用程序ID。它將是32位數字密鑰。

<img src="C:\\Data\\Users\\DefApps\\AppData\\<APP_ID>\\local\\ Mobile.jpg" alt="Mobile.jpg" /> 
+0

很遺憾,沒有任何記錄 – eeadev 2014-12-02 08:50:04

+1

正確,我發現只有一個鏈接幫助我解決了這個問題。你可以在這裏查詢http://suchan.cz/2013/05/image-path-databinding-in-wp8-and-windows-8-apps/ – imdadhusen 2014-12-02 08:58:18

+0

是否能夠獲得我的賞金? HTTP://計算器。COM /問題/ 27042339/WindowsPhone的-的PhoneGap-pushnotification-不能-GET-URI,之後登記 - 我 - 德維 – eeadev 2014-12-02 09:08:27

相關問題