2013-07-21 105 views
1

我想从远程URL下载视频并将其保存到iPhone应用程序中的文件中。 我知道视频链接的作品,因为我用AVPlayer,但是,我无法下载它。答复总是(空)。iOS - 下载视频

以下代码有什么问题?

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:someURLString]]; 
    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 

    operation.outputStream = [NSOutputStream outputStreamToFileAtPath:someFilePath append:NO]; 

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSLog(@"Successfully downloaded file to %@", [NSURL fileURLWithPath:someFilePath]); 
     NSLog(@"THE RESPONSE: %@", responseObject); 
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error: %@", error); 
    }]; 

    [operation start]; 

更新

我注释掉operation.outputStream线,而这一次我得到了响应。这是否意味着文件路径有问题?

+0

是否下载文件? – 2013-07-21 06:21:32

+0

不,操作总是“成功”,但没有下载任何东西@ H2CO3 – GangstaGraham

+0

您是否试图将它下载到应用程序包中? – 2013-07-21 06:26:03

回答

0

这是什么问题。

我正在使用视频的网址,并作为文件路径的一部分。

为什么这是错的?它有反斜杠,所以我认为iOS变得困惑。

获得的经验教训:确保添加到目录以创建文件的字符串没有反斜杠。

我希望这可以帮助任何犯这个愚蠢错误的人。 :P

0

只是创建一个指向该文件的链接,然后使用NSURLConnection进行下载。

创建一个URL连接下载:要保存的文件

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
[request setURL:[NSURL URLWithString:strFileUrl]]; //strFileURL is url of your video/image 
NSURLConnection *conection = [[[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO] autorelease]; 
[conec start]; 
[request release]; 

获取路径数据:

strFilePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:strFileName]; 

你的类必须采用NSURLConnectionDelegate协议的3种方法:(请阅读有关协议和代表)

- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
    { 
     // create 
     [[NSFileManager defaultManager] createFileAtPath:strFilePath contents:nil attributes:nil]; 
     file = [[NSFileHandle fileHandleForUpdatingAtPath:strFilePath] retain];// read more about file handle 
     if (file) { 
      [file seekToEndOfFile]; 
     } 
    } 



- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)receivedata 
    {  
     //write each data received 
     if(receivedata != nil){ 
      if (file) { 
       [file seekToEndOfFile]; 
      } 
      [file writeData:receivedata]; 
     } 
    } 

    - (void)connectionDidFinishLoading:(NSURLConnection*)theConnection { 
     //close file after finish getting data; 
     [file closeFile]; 
    } 

    - (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
    { 
     //do something when downloading failed 
    } 

如果你想查看你的文件,使用一个UIWebview来加载它:

NSURL *fileURL = [NSURL fileURLWithPath:strFilePath]; 
    [wvReview loadRequest:[NSURLRequest requestWithURL:fileURL]];