美文网首页开发总结iOS程序猿iOS学习笔记
【iOS】AFN多张图片上传及PHP端接收

【iOS】AFN多张图片上传及PHP端接收

作者: Always_on | 来源:发表于2017-01-11 16:19 被阅读355次

    今天翻了翻原来的项目,突然发现之前自己写多图上传那部分有些乱,整理了一下,写篇博文记录一下,顺便验证一下最近自己写PHP代码的接收图片是否成功;

    对于多张图片的上传,往往项目需求时图片全部上传成功后要进行一下操作,看了一些其他的博文,给出了很好的办法,其中一种就是单张上传,并用GCD dispatch group来完成全部上传完成后的统一回调,代码如下:

    dispatch_group_t group = dispatch_group_create();
        
        for (NSInteger i = 0 ; i<images.count; i++) {
            dispatch_group_enter(group);
            [manager POST:url parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
                
                NSData* imageData = UIImageJPEGRepresentation(images[i], 0.5);
                [formData appendPartWithFileData:imageData name:@"upimage" fileName:[NSString stringWithFormat:@"image[%ld].jpg",(long)i] mimeType:@"image/jpeg"];
                
            } progress:^(NSProgress * _Nonnull uploadProgress) {
                
            } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject){
                NSLog(@"第%ld张上传成功",(long)i);
                dispatch_group_leave(group);
            } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
                NSLog(@"第%ld张上传失败",(long)i);
                dispatch_group_leave(group);
            }];
        }
        
        dispatch_group_notify(group, dispatch_get_main_queue(), ^{
            NSLog(@"全部上传完毕");
        });
    

    images是传过来的存放image的数组;

    PHP端的代码,本人PHP研究阶段,只是单独的实现可接收图片,代码还不完善,希望大家多多发表自己的建议​,你们的建议是我进步的动力;

    $url = $_FILES["upimage"]["tmp_name"];
    $name = $_FILES["upimage"]["name"];//拼接要作为服务器上保存的文件名字
    $save_folder = $_SERVER['DOCUMENT_ROOT'].'/imagedownload/';
    $newfname = $save_folder .$name;// 打开连接  rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。// 获取客户端上传到缓存文件夹下的文件
    $file = fopen ($url, "rb");
    if ($file) {
        // a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件 存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。// 获取要把客户端传递过来的文件复制到新的文件夹下的名字   
        $newf = fopen ($newfname, "a");    
        if ($newf)        
            // 检查文件是否结束,如结束,则返回非零值     
            while(!feof($file)) {     
                // 开始从某个文件读取1MB 然后写入到新的路径1MB
                fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );        
            }}
            if ($file) {    
                // 关闭文件链接    
              fclose($file);
            }
          if ($newf) { 
           fclose($newf);
          }
    
    Snip20170108_3.png

    运行代码后图片上传成功。​

    相关文章

      网友评论

      本文标题:【iOS】AFN多张图片上传及PHP端接收

      本文链接:https://www.haomeiwen.com/subject/lfsrbttx.html