写上传文件纯粹就是装逼,我们就当上传图片好了 。。。
首先感谢github友:https://github.com/silenceper/UploadFile
为啥子要写这篇文章,首先申明下本人不是闲的蛋疼,而是本人的确在工作中遇到蛋疼的问题,本地不是大牛,但是相互学习指点吧。。。
我们是要上传文件,一般都是post请求,开始之前你需要将这个文件搞到你项目中
请注意路径,UploadFile.class.php的路径
代码如下
include '../UploadFile.class.php';
$value= htmlspecialchars($_POST["action"]);
$action = $value?$value:"";
$user_id=htmlspecialchars($_POST["user_id"]);
$img_arr=$_FILES["picname"];
if ($action=="update_photo") {
updateUserAction($user_id,$img_arr);
}
function updateUserAction($u_id,$i_arr){
$upload=new UploadFile();
$upload->maxSize = 3*pow(2,20) ;// 设置附件上传大小 3M 默认为2M
$upload->allowExts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型 默认为空不检测扩展
$upload->savePath = './pictures/';// 设置附件上传目录 默认上传目录为 ./uploads/
$result= $upload->upload();
$output=array("obj"=>$i_arr,"msg"=>$result,"status"=>200,"list"=>$upload->getUploadFileInfo());
exit(json_encode($output));
}
然后就是iOS端了 。。。 iOS端,就要注意了 ,有点小小的蛋疼
先上代码。。。
NSMutableDictionary *data=[[NSMutableDictionary alloc] init];
[data setObject:@"1" forKey:@"user_id"];
[data setObject:@"update_photo" forKey:@"action"];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//支持HTTPS请求
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy];
securityPolicy.allowInvalidCertificates = YES;
manager.securityPolicy = securityPolicy;
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject: @"application/json"];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager POST:@"http://192.168.2.1/sqltest/user.php" parameters:data constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:UIImagePNGRepresentation([UIImage imageNamed:@"defimg"]) name:@"picname[0]" fileName:@"defimg.png" mimeType:@"png"];
[formData appendPartWithFileData:UIImageJPEGRepresentation([UIImage imageNamed:@"testimg.jpg"], 1) name:@"picname[1]" fileName:@"testimg.jpg" mimeType:@"jpg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"...responseObject = %@",responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"...error = %@",error);
}];
name:@"picname[0]" 表示第一张,
name:@"picname[1]" 表示第二张
name:@"picname[n]" 表示第n+1张
fileName:@"testimg.jpg" 这里最好是把后缀名带上,多了不用解释了

本文介绍了一个文件上传解决方案,包括PHP后端实现与iOS客户端交互过程。通过具体的代码示例,展示了如何配置文件上传参数及使用AFNetworking进行多部分数据上传。
124

被折叠的 条评论
为什么被折叠?



