美文网首页开发总结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