2012-10-22 106 views
1

假設我在我的頁面中有一個WebView,其內容由WebView.NavigateToString(string html)加載。現在的問題是HTML字符串包含一些<img>標籤,如在WinRT WebView控件中顯示圖像

<img src="http://www.remotefakesite.com/1.jpg" /> 

但是圖像不能正確除非請求有一個特殊的cookie下載。但是請求是由控件發送,我不知道如何修改請求(向它添加一個cookie)。我試過設置HttpRequest.DefaultWebProxy,但它不適用於內置控件發送的請求。

另一種解決方案是下載我自己HttpWebRequest的圖像(用正確的cookie)到本地文件夾,然後修改img標籤在html字符串

<img src="files:///xxxxx" /> 

但顯然files:///方案是對安全地鐵應用程序的政策。 ms-appxms-appdata都不起作用,因爲下載的圖像不屬於我的項目。

你有什麼解決辦法嗎?

回答

2

,你可以嘗試使用與所需的自定義HTTP請求下載餅乾,Base64編碼,然後將其插入到src屬性:

<img src="data:image/png;base64,iVBOR8Q..." /> 

而且隨着HTML的其餘部分使用NavigateToString方法的WebView通過。

這可能不是最好的解決方案在世界上,但它只是工作,相比其他選項。

+0

什麼是「iVBOR8Q ...」? –

0

您可以啓用應用程序的圖片庫功能,並使用圖片庫位置下載圖像。 Here is a guide on accessing pictures library

更新:

的圖像,然後從圖片庫中的圖像對象創建。一個例子是:

async private void LoadImage() 
{ 
    try 
    { 
     IReadOnlyList<Windows.Storage.StorageFile> resultsLibrary = 
      await Windows.Storage.KnownFolders.PicturesLibrary.GetFilesAsync(); 
     MessageBlock.Text += "Show image: " + resultsLibrary[0].Name + "\n"; 
     Windows.Storage.Streams.IRandomAccessStream imageStream = 
      await resultsLibrary[0].OpenAsync(Windows.Storage.FileAccessMode.Read); 
     Windows.UI.Xaml.Media.Imaging.BitmapImage imageBitmap = 
      new Windows.UI.Xaml.Media.Imaging.BitmapImage(); 
     imageBitmap.SetSource(imageStream); 
     ImagePlayer.Source = imageBitmap; 
    } 
    catch (Exception ex) 
    { 
     MessageBlock.Text += "Exception encountered: " + ex.Message + "\n"; 
    } 
} 
+0

那麼我應該在''中使用什麼? –

+0

'img.src'看起來像什麼?它使用什麼方案? –

+0

在MSDN上有所有這些問題的文檔:http://msdn.microsoft.com/en-us/library/windows/apps/hh453196.aspx –

0

您可以更好地利用這一點,寫的就像HTML:

this.InitializeComponent(); 

string htmContent = @" <html> 
<head></head> 
<body> 
<img src="http://www.remotefakesite.com/1.jpg" /> 
</body> 
</html>"; 

preview.NavigateToString(htmContent); 

只有你需要的WebView元素(這裏這個名爲 「預覽」)

+0

我正是這樣做的。但''將無法正確加載,因爲* get請求*中沒有cookie,所以圖像服務器不會返回圖像。 –

+0

我測試它,在這裏我可以看到我的網站上的圖像。你有沒有啓用「互聯網(客戶端和服務器)」 – user1731468

+0

您的網站上的圖像是一個靜態圖像文件,但它不在我的網站。 –

3

我做一些測試在這裏,如果你可以下載圖像到例如項目文件夾。 例如,在「媒體」文件夾中,然後就可以使用此代碼打開圖像:如果圖像大小不是問題

<img src="ms-appx-web:///Media/10.jpg" /> 
相關問題