【发布时间】:2012-08-20 10:04:57
【问题描述】:
我是 iPhone 新手,
我目前正在开发一个 iPhone 应用程序,并希望实现从 url 下载文件的功能。我创建了UIWebView,当我单击webview 下载中的download 链接时,将开始下载,我将该文件保存到文档目录中的指定文件夹中。但我无法看到我下载的文件。
这是我的代码 sn-p,
//CAPTURE USER LINK-CLICK in UIwebView.
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
// Create the request.
NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:DUrl]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
// create the connection with the request and start loading the data
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
// Create the NSMutableData to hold the received data.
receivedData = [[NSMutableData data] retain];
} else {
NSLog(@"Inform the user that the connection failed.");
}
return YES;
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
[receivedData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data1
{
[receivedData appendData:data1];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"Succeeded! Received %d bytes of data",[receivedData length]);
DirPath=[self MyApplicationDocumentDirectory];
[receivedData writeToFile:DirPath atomically:YES];
UIAlertView* Alert = [[UIAlertView alloc] initWithTitle:@"Download Complete !"
message:nil delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[Alert show];
[Alert release];
// release the connection, and the data object
[connection release];
[receivedData release];
}
我们将不胜感激。
编辑:
BOOL success =[[NSFileManager defaultManager] fileExistsAtPath:MyDirPath];
if (success)
{
UIAlertView* innerAlert = [[UIAlertView alloc] initWithTitle:@"Already downloaded."
message:@"Do you want to Downlaod again ?" delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"Yes",@"No",nil];
[innerAlert show];
[innerAlert release];
}
在哪里写这个条件?
【问题讨论】:
-
writeToFile:atomically 方法是否返回 YES?目前你只是假设它成功了。您可能应该专门对其进行测试。例如
if([receivedData writeToFile:DirPath atomically:YES]) { //alert success } else { //handle failure } -
是的,它返回我忘了在这里添加。
-
好的,你是不是在生成路径的时候也指定了文件名?
标签: iphone ipad uiwebview nsurlrequest writetofile