如果本地文件不存在,任何人都可以提供或告诉我如何异步下载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]]];
然而它崩溃或者没有在我的网页视图中加载任何内容。 有什么建议吗?
使用SELF DOCUMENTSDIRECTORY编辑
答案 0 :(得分:3)
您需要将文件放在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 :(得分:1)
我认为错误是您将文件下载到文档目录,然后您正在主包中查找该文件。您应该在文档目录中查找它。