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

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

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

dispatch_group_t group = dispatch_group_create();

for (NSInteger i = 0 ; i

dispatch_group_enter(group);

[manager POST:url parameters:nil constructingBodyWithBlock:^(id _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);

}

833978f88dfd

Snip20170108_3.png

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