AFNetworking的图片、视频下载并保存到指定的app的Caches目录下

本文详细介绍了如何使用AFNetworking库实现文件下载功能,包括检查文件是否存在、创建存储目录、下载文件及其进度控制和错误处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.h头文件接口

/**

 * 下载文件

 *

 * @param string aUrl 请求文件地址

 * @param string aSavePath 保存地址

 * @param string aFileName 文件名

 * @param int aTag tag标识

 */

- (void)downloadFileURL:(NSString *)aUrl savePath:(NSString *)aSavePath fileName:(NSString *)aFileName tag:(NSInteger)aTag;


.m实现代码如下:

/**

 * 下载文件

 */

- (void)downloadFileURL:(NSString *)aUrl savePath:(NSString *)aSavePath fileName:(NSString *)aFileName tag:(NSInteger)aTag

{

    NSFileManager *fileManager = [NSFileManagerdefaultManager];

    

    //检查本地文件是否已存在

    NSString *fileName = [NSStringstringWithFormat:@"%@/%@", aSavePath, aFileName];

    

    //检查附件是否存在

    if ([fileManager fileExistsAtPath:fileName]) {

        NSData *audioData = [NSDatadataWithContentsOfFile:fileName];

        [self requestFinished:[NSDictionary dictionaryWithObject:audioData forKey:@"res"] tag:aTag];

    }else{

        //创建附件存储目录

        if (![fileManager fileExistsAtPath:aSavePath]) {

            [fileManager createDirectoryAtPath:aSavePathwithIntermediateDirectories:YESattributes:nilerror:nil];

        }

        

        //下载附件

        NSURL *url = [[NSURLalloc] initWithString:aUrl];

        NSURLRequest *request = [NSURLRequestrequestWithURL:url];

        

        AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

        operation.inputStream   = [NSInputStream inputStreamWithURL:url];

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

        

        //下载进度控制

        /*

         [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {

         NSLog(@"is download%f", (float)totalBytesRead/totalBytesExpectedToRead);

         }];

         */

        

        //已完成下载

        [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation,id responseObject) {

            

            NSData *audioData = [NSDatadataWithContentsOfFile:fileName];

            //设置下载数据到res字典对象中并用代理返回下载数据NSData

            [self requestFinished:[NSDictionary dictionaryWithObject:audioData forKey:@"res"] tag:aTag];

        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

            

            //下载失败

            [self requestFailed:aTag];

        }];

        

        [operation start];

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值