2012-10-15 14 views
5

LocalState dizinindeyken bir web sayfasındaki görüntüleri yükleyemiyorum. Özellikle, dosya yolu LocalState dizinine başvuruda bulunduğunda web sayfasını başlatmaya çalışırken bir güvenlik sorunu var gibi görünüyor. Üste |Windows 8 RT - Dinamik olarak html oluşturmak görüntü oluşturmuyor

Web sayfası, html dosyasını sağ tıklatıp Visual Studio'daki tarayıcıda görüntülediğimde, resimlerle DOES yükler.

src etiketinin yolunu şu şekilde değiştirdim: src = "ms-appdata: ///Local/Logo.jpeg" Çalışmıyor.

Yardım beni ...

Örnek kod

public static async Task Update(WebView webview, IStorageFile file) { 
    var html = await Windows.Storage.PathIO.ReadTextAsync(file.Path); 
    webview.NavigateToString(html); 
} 
+0

HTML dosyasını bir WebView öğesine mi yüklüyorsunuz? –

+0

HTML sayfasını yüklemek için WebView.Navigate veya WebView.NavigateTo yöntemlerini mi kullanıyorsunuz? –

+0

public static async Görev Güncelleştirmesi (WebView web görünümü, IStorageFile dosyası) { var html = Windows.Storage.PathIO.ReadTextAsync (dosya.Path) bekliyor; webview.NavigateToString (html); } –

cevap

2

LocalData klasöründeki resimlere işaret etiketleri ile çalışmaz NavigateToString yöntemi. (yine de hatırladığım kadarıyla). Aslında, NavigateToString ayrıca JavaScript ve CSS bağlantılarını da kırar. Server

Görüntüler

bir çözüm, bir ağ sunucusuna yerine localdata işaret edecek kaynağını değiştirmektir. Bunun uygulama senaryonuz için işe yaradığından emin değilim. içerik

ikinci seçenek uygulamanıza içerik olarak html ve görüntü dosyaları eklemek ve HTML yüklemek için

WebView1.Navigate(new Uri("ms-appx-web:///assets/SampleHtmlPage.html")); 

kullanmaktır olarak

Görüntüler ve HTML. Süreç HTTP Sunucusu İşte

yılında

sorunlarını ele almaya app özel bir HTTP sunucusu kullanan bir çözümdür.

Loading Local HTML Content in Metro WebView (Windows 8)

Base 64 kodlanmış görüntü

Son olarak, LocalData klasörde görüntülerinin Base64 kodlama kullanarak başka bir çözüm yoktur.

internal async void MakeHtmlString() 
{ 
    StorageFile imageFile; // get image file here. 

    var html = 
    string.Format("<div><img src='data:image/png;base64,{0}'", 
        await GetImageBase64(imageFile)); 
} 

internal async Task<string> GetImageBase64(StorageFile imageFile) 
{ 
    var imageStream = await imageFile.OpenAsync(FileAccessMode.Read); 
    var inputStream = imageStream.GetInputStreamAt(0); 
    var dataReader = new DataReader(inputStream); 

    var dataResults = await dataReader.LoadAsync((uint)imageStream.Size); 
    var bytes = new byte[dataResults]; 
    dataReader.ReadBytes(bytes); 
    return Convert.ToBase64String(bytes); 
} 

Bu son yaklaşım görüntüler için çalışır, ancak CSS dosyaları için geçerli değildir.

+0

İşte bazı olasılıkları tartışan MSDN forumlarında bir iş parçacığı. http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/cbde9333-ba45-4b62-84f7-9f4c38ecbeb1 –

+0

Seni seviyorum! Bu çalışıyor. –

+0

Kızarıyorum. :> –

İlgili konular