[英]Isolated storage - opeation not permitted / while copying html file in Windows Phone
[英]How to access isolated storage file from HTML or Javascript for Windows Phone and PhoneGap Application
我正在使用PhoneGap開發適用於Windows,Android和iOS平台的應用程序。
我有一個問題,需要你們的專家協助。
我為Windows Phone創建了一個插件。 插件基本上是從URL下載圖像,並存儲在Downloads文件夾內的獨立存儲文件夾中,此文件夾可以成功運行。
現在我的問題是,有沒有辦法從javascript訪問隔離的存儲文件。 例如,我已經下載了一張圖像並存儲在隔離的存儲中(“ Download / 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"/>
您的意見或建議將不勝感激! 謝謝與問候,Imdadhusen
我已使用以下代碼解決了該問題。 發布答案的目的是可以幫助正在搜索相同內容的其他人。
現在,我將下載的圖像保存在應用程序的本地文件夾中。
以下功能將從實時網址下載圖像。
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" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.