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

.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];

    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
缓存策略 typedef NS_ENUM(NSUInteger, YBCacheType){ YBCacheTypeReturnCacheDataThenLoad = 0,///< 有缓存就先返回缓存,同步请求数据 YBCacheTypeReloadIgnoringLocalCacheData, ///< 忽略缓存,重新请求 YBCacheTypeReturnCacheDataElseLoad,///< 有缓存就用缓存,没有缓存就重新请求(用于数据不变时) YBCacheTypeReturnCacheDataDontLoad,///< 有缓存就用缓存,没有缓存就不发请求,当做请求出错处理(用于离线模式) YBCacheTypeReturnCacheDataExpireThenLoad///< 有缓存就用缓存,如果过期了就重新请求 没过期就不请求 }; //get请求 - (void)test_get { NSString *url = @"http://www.baidu.com"; NSDictionary *params = @{@"i":@"1"}; [YBHttpTool get:url params:params success:^(NSDictionary *obj) { //成功 } failure:^(NSError *error) { //失败 }]; } //get带缓存的请求 - (void)test_get_cache { NSString *url = @"http://www.baidu.com"; NSDictionary *params = @{@"i":@"1"}; [YBHttpTool get:url params:params cacheType:YBCacheTypeReturnCacheDataThenLoad success:^(NSDictionary *obj) { //成功 } failure:^(NSError *error) { //失败 }]; } //post请求带缓存 - (void)test_post_cache { NSString *url = @"http://www.baidu.com"; NSDictionary *params = @{@"i":@"1"}; [YBHttpTool post:url params:params cacheType:YBCacheTypeReturnCacheDataThenLoad success:^(NSDictionary *obj) { //成功 } failure:^(NSError *error) { //失败 }]; } //上传单张图片 - (void)test_upload_image { UIImage *image = [UIImage imageNamed:@"1"]; NSData *data = UIImageJPEGRepresentation(image, 0.5); [YBHttpTool uploadImageWithImage:data success:^(NSDictionary *obj) { //上传成功 } failure:^(NSError *error) { //上传失败 }]; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值