zoukankan      html  css  js  c++  java
  • MKNetworkKit下载图片并显示在UIImageView上

    点击按钮开始下载

    - (IBAction)onClick:(id)sender {
        NSMutableDictionary *imageDic = [[NSMutableDictionary alloc] init];
        //获取本地沙箱的缓存路径
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
        NSString *cachesDirectory = paths[0];
        NSString *downloadPath = [cachesDirectory stringByAppendingPathComponent:@"test1.jpg"];
        
        //先从本地获取缓存图片
        UIImage *image = [UIImage imageWithContentsOfFile:downloadPath];
        
        //如果从本地缓存中获取为空,那么再从应用资源中获取一次
        if (image == nil) {
            image = [UIImage imageNamed:@"test1.jpg"];
        }
        
        if (nil != image) {
            [imageDic setObject:image forKey:@"image"];
            NSLog(@"缓存有图片!");
            _imageView1.image = image;
        }
        
        //如果本地缓存图片为空,则远程请求,并缓存到本地
        if(image == nil) {
            
            NSString *path = [[NSString alloc] initWithFormat:@"/service/download.php?email=%@&FileName=test1.jpg",@"gs.654586026@qq.com"];
            path = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        
            MKNetworkEngine *engine = [[MKNetworkEngine alloc] initWithHostName:@"51work6.com" customHeaderFields:nil];
        
            MKNetworkOperation *downloadOperation = [engine operationWithPath:path params:nil httpMethod:@"POST"];
            [downloadOperation addDownloadStream:[NSOutputStream outputStreamToFileAtPath:downloadPath append:TRUE]];
        
            [downloadOperation onDownloadProgressChanged:^(double progress) {
            NSLog(@"download progress: %.2f%%", progress*100.0);
            _progressView.progress = progress;
            }];
        
            [downloadOperation addCompletionHandler:^(MKNetworkOperation *operation) {
            
            NSLog(@"download file finished!");
            UIImage *image = [UIImage imageWithContentsOfFile:downloadPath];
            _imageView1.image = image;
                
            } errorHandler:^(MKNetworkOperation *errorOp, NSError* err) {
                NSLog(@"MKNetwork请求错误 : %@", [err localizedDescription]);
            }];
        [engine enqueueOperation:downloadOperation];
        }
    }
    

      

  • 相关阅读:
    Android之Handler实现延迟执行
    static{}语句块
    (转)git常见错误
    smarty使用
    git简易操作
    angular路由——ui.route
    angular服务二
    angular服务一
    angualr 实现tab选项卡功能
    EF 集合版 状态版的 增加、删除、修改 的实践
  • 原文地址:https://www.cnblogs.com/saurik/p/4810201.html
Copyright © 2011-2022 走看看