Webビューを使用してWindows8アプリに特定のデータを表示しています。ローカルのjsファイルへのインクルードを使用し、ローカルに保存された画像を使用したいと思います。
これは可能ですか?
ファイルが配置されているローカルパスを配置しても、運が悪かった。
Webビューを使用してWindows8アプリに特定のデータを表示しています。ローカルのjsファイルへのインクルードを使用し、ローカルに保存された画像を使用したいと思います。
これは可能ですか?
ファイルが配置されているローカルパスを配置しても、運が悪かった。
WebView
ドキュメントによると、ms-appx-web
プロトコルを使用して他のファイルを参照することしかできません。つまり、に保存されているファイルをロードするためにのみ使用できます。つまりWindows.ApplicationModel.Package.Current.InstalledLocation
、アプリケーションと一緒にコンテンツとして配布する必要があります。コントロールはms-appdata
、セキュリティ上の理由からプロトコルをサポートしていません。つまり、保存されているファイルを開くことはできません。また、実行時にファイルを生成Windows.Storage.ApplicationData.Current.LocalFolder
Windows.Storage.ApplicationData.Current.RemoteFolder
またはWindows.Storage.ApplicationData.Current.TempFolder
ダウンロードする場合は、ファイルを配置する必要があります。
JavaScriptアプリWebView
では、もう少し柔軟性があります。プロトコルもサポートしms-appdata
ますが、画像などのメディアファイルに対してのみサポートします。スクリプトやCSSなどの実行可能ファイルを開くことはできません。
ローカルの.htmlファイルまたはatcを開きたい場合。フォルダにダウンロードする必要がありInstalledLocation
ます。新しいファイルを作成するオプションがない場合は、次のように使用できますfile.CopyAsync(htmlFolder, fname + ".html");
。たとえば、.htmlファイルを作成します。
StorageFolder htmlFolder = await Windows.ApplicationModel.Package.Current.InstalledLocation.CreateFolderAsync(@"HtmlFiles", CreationCollisionOption.GenerateUniqueName);
IStorageFile file = await htmlFolder .CreateFileAsync(fname + ".html", CreationCollisionOption.GenerateUniqueName);
そして、私がこの.htmlファイルを簡単に開くことができるよりもFileOpenPicker
:
var fop = new FileOpenPicker();
fop.FileTypeFilter.Add(".html");
var file = await fop.PickSingleFileAsync();
if (file != null)
{
string myPath = file.Path.Substring(file.Path.IndexOf("HtmlFiles"));
myWebview.Navigate(new Uri("ms-appx-web:///" + myPath));
}
そして忘れないでください-InstalledLocation
あなたからだけそれを開くことができますms-appx-web:///
WebViewがIE10ベースの場合、FIleReaderが探しているものかもしれません。これは、画像のiploadページで使用するコードのスニペットで、[ファイルを開く]ダイアログで選択したときにページに画像を表示します。
$('input:file').each(function(index, evt){
if(index===0)
{
var files = evt.files;
for(var i=0;i<files.length;i++)
{
if(files[i].name===filename)
{
var reader = new FileReader();
reader.onload=(function(theFile){
return function(e){
var line= uploader.fineUploader('getItemByFileId',id);
if(line!=undefined)
$(line).append('<img class="fileimage" id="fileImage-' + id + '" src="'+e.target.result+'" />');
};
})(files[i]);
reader.readAsDataURL(files[i]);
break;
}
}
}
これがあなたを正しい方向に向けることを願っています!