ASIHTTP асинхронный pdf скачать - PullRequest
0 голосов
/ 26 марта 2011

Может ли кто-нибудь предоставить или показать мне, как загрузить PDF асинхронно, если локальный файл не существует.

Мой код выглядит следующим образом:

 NSURL *url = [NSURL URLWithString:@"http://www.url.com"]; 
NSString *tempDownloadPath = [[self documentsDirectory] 
                              stringByAppendingString:@"test.pdf"]; 
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
[request setDownloadDestinationPath:[self documentsDirectory]]; 
[request setTemporaryFileDownloadPath:tempDownloadPath]; 
[request setDelegate:self]; 
[request startAsynchronous]; 

После завершения я пытаюсьи назовите это

[aWebView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[self documentsDirectory] pathForResource:@"test" ofType:@"pdf"]isDirectory:NO]]];

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

РЕДАКТИРОВАТЬ С САМОСТОЯТЕЛЬНОЙ ДОКУМЕНТАЦИЕЙ КАТАЛОГ

Ответы [ 2 ]

3 голосов
/ 27 марта 2011

Вам нужно поместить свой файл в какое-то место, доступное для UIWebView, а затем указать его там. Вы не включили способ создания [self documentsDirectory] и просто добавляете строку, а не используете путь, добавляемый для вашего временного местоположения. Вы также не сообщаете ASIHTTPRequest, какое реальное имя файла использовать для окончательного документа, а просто каталог для его размещения, так что он, вероятно, даже не сохраняется. Кроме того, неверный запрос загрузки UIWebView.

Вот как создать путь для указания ASIHTTPRequest, куда поместить файл.

ИЗМЕНЕНО, чтобы вместо этого изменить временное местоположение файла на NSCachesDirectory, чтобы оно автоматически очищалось при сбое загрузки с частичными данными

// SAVED PDF PATH
// Get the Document directory
NSString *documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
// Add your filename to the directory to create your saved pdf location
NSString *pdfLocation = [documentDirectory stringByAppendingPathComponent:@"test.pdf"];

// TEMPORARY PDF PATH
// Get the Caches directory
NSString *cachesDirectory = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
// Add your filename to the directory to create your temp pdf location
NSString *tempPdfLocation = [cachesDirectory stringByAppendingPathComponent:@"test.pdf"];

// Tell ASIHTTPRequest where to save things:
[request setTemporaryFileDownloadPath:tempPdfLocation];     
[request setDownloadDestinationPath:pdfLocation]; 

Затем, когда ваш делегат получит уведомление о завершении загрузки файла, сообщите UIWebView, где найти файл, снова используя соответствующие методы.

// If you've stored documentDirectory or pdfLocation somewhere you won't need one or both of these lines
NSString *documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *pdfLocation = [documentDirectory stringByAppendingPathComponent:@"test.pdf"];

// Now tell your UIWebView to load that file
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:pdfLocation]]];
1 голос
/ 26 марта 2011

Я думаю, что ошибка в том, что вы загружаете файл в каталог документов, а затем ищете файл в основном комплекте.Вы должны искать его в каталоге документов.

...