2013-07-05 3 views
4

я скачиваю файл изображения и запись в каталог документов, как показано ниже:Как читать файл изображения в каталоге документов из Ios WebView

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *objURL = @"http://test.test.com/file/image.png"; 
NSURL  *objurl = [NSURL URLWithString:objURL]; 
NSData *imgData = [NSData dataWithContentsOfURL:objurl]; 

NSString *imgFile = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"image.png"]; 
[imgData writeToFile:imgFile atomically:YES]; 

В моем WebView, я загрузил HTML-файл из моего пакета ресурсов для использования в мой webView, но как мне получить тег в html для чтения image.png в каталоге документов?

<html> 
<body> 
    <img src="../what/is/the/path/to/use/image.png" /> 
</body> 
</html> 

ответ

2

Вы могли бы дать URL для этого изображения, используя абсолютный путь с file:// схемой:

NSString *documentsDirectory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES)[0]; 
NSString *filePath = [NSString stringWithFormat:@"file://%@/image.png", documentsDirectory]; 

Затем можно запустить некоторые JavaScript, чтобы обновить src тега, чтобы обновить его на новый путь:

NSString *javascript = [NSString stringWithFormat:@"var imageElement = document.getElementById('localFile'); imageElement.setAttribute('src', '%@');", filePath]; 
[self.webView stringByEvaluatingJavaScriptFromString:javascript]; 

В вашем HTML путь будет выглядеть примерно так:

<html> 
    <body> 
     <img id="localFile" src="file:///var/mobile/Applications/3D7D43E8-FA5E-4B19-B74C-669F7D1F3093/Documents/image.png" /> 
    </body> 
</html> 
+0

Это не working.Failed загрузить ресурс –

+0

Смотрите скриншот из Safari удаленного отладчика [здесь] (HTTPS : //lh5.googleusercontent.com/-E04kqghLhYk/V7W1aWfKtTI/AAAAAAAAGUo/xavby-jUx7oIP7nGHXa42-f1GeIq5LaWACL0B/w1500-h162-no/Console.png) –

+0

Но изображение можно загрузить из пакета приложений –

0

Вы не можете связать источник изображения с начала. Вам нужно будет сделать это через JavaScript.

Вам необходимо пройти путь изображения к UIWebView, оценив JS. Здесь вы можете пройти путь к своему изображению, а JS загрузит изображение в соответствующий тег HTML.

1

Вместо оценки JavaScript, я просто записываю заполнитель в моем HTML содержания, и заменить его непосредственно ж/содержание необходимого:

NSString *htmlFilePath = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html"]; 
NSString *htmlString = [NSString stringWithContentsOfFile:htmlFilePath encoding:NSUTF8StringEncoding error:&error]; 
if (error) { 
    // handle error 
    return; 
} 

NSString *imageFilePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject] stringByAppendingPathComponent:@"sample_image.png"]; 
NSURL *imageFileURL = [NSURL fileURLWithPath:imageFilePath]; 
NSString *sampleImageReplacement = 
    [NSString stringWithFormat:@"<img src=\"%@\" />", [imageFileURL absoluteString]]; 

// Replace the placeholder w/ real content, 
// and of course, we can also replace it w/ empty string 
// if the image cannot be found. 
htmlString = [htmlString stringByReplacingOccurrencesOfString:@"%sample_image%" 
                withString:sampleImageReplacement]; 
... 
[webView loadHTMLString:htmlString baseURL:nil]; 
1

Вы можете загрузить изображения из приложения пачки, но вы не можете загрузить изображения из каталога документов напрямую.

Но есть работа вокруг.

Используйте CocoaHTTPServer для создания InAppHttpServer, и вы можете получить доступ к изображениям в каталоге документов, используя http-адрес в веб-представлении.

или еще

Преобразование изображения в base64 и загрузить изображение с помощью evaluatejavascript из WebView

document.getElementById('img').setAttribute('src', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==');