AFNetworking 3.0携带参数上传文件Demo 付java服务器端代码


一、服务端代码:

服务端是java用国产nutz搞的,实际mvc框架都大同小异,就是提交文件的同时还带了个表单参数

[java]  view plain  copy
  1. @AdaptBy(type=UploadAdaptor.class, args={"${app.root}/WEB-INF/tmp/user_avatar""8192""utf-8""20000""102400"})  
  2. @At  
  3. @Aop("redis")  
  4. public Object uploadAvatar(@Param("file")TempFile tf, @Param("token") String token, AdaptorErrorContext err) {  
  5.       
  6.     // token 对应客户端参数名  
  7.     NutMap re = new NutMap();  
  8.     if (err != null && err.getAdaptorErr() != null) {  
  9.         return re.setv("code"3).setv("msg""文件大小不符合规定");  
  10.     }  
  11.     if (tf == null) {  
  12.         return re.setv("code"4).setv("msg""空文件");  
  13.     }  
  14.       
  15.     if (Strings.isBlank(token)) {  
  16.         return re.setv("code"2).setv("msg""");// 没有token  
  17.     }  
  18.     String member_id = jedis().get(token);// 从redis根据token获取member_id  
  19.     if (Strings.isBlank(member_id)) {  
  20.         return re.setv("code"2).setv("msg""");// 未登录  
  21.     }  
  22.     File f = tf.getFile(); // 这个是保存的临时文件  
  23.     FieldMeta meta = tf.getMeta(); // 这个原本的文件信息  
  24.     String oldName = meta.getFileLocalName(); // 这个时原本的文件名称  
  25.   
  26.     PropertiesProxy property = new PropertiesProxy("/custom/my.properties");  
  27.   
  28.     String filename = System.currentTimeMillis() + oldName.substring(oldName.lastIndexOf("."));  
  29.     StringBuffer sb =new StringBuffer(property.get("my.filepath"));  
  30.     sb.append("\\avator\\");  
  31.     sb.append(filename);  
  32.       
  33.     StringBuffer sbdb =new StringBuffer("/avator/");  
  34.     sbdb.append(filename);  
  35.   
  36.     try {  
  37.         Files.move(f, new File(sb.toString()));  
  38.         //更新数据库  
  39.         dao.update(Member.class,Chain.make("avator", sbdb.toString()),Cnd.where("member_id""=", member_id));  
  40.           
  41.     } catch (IOException e) {  
  42.         // TODO Auto-generated catch block  
  43.         e.printStackTrace();  
  44.         return re.setv("code"1);  
  45.     }  
  46.   
  47.     return re.setv("code"0).setv("msg""");  
  48. }  


二、客户端代码:

用html表单提交的话,一般是这样的

[html]  view plain  copy
  1. <form action="${base}/usr/uploadAvatar" method="post"  
  2.     enctype="multipart/form-data">  
  3.     头像文件 <input type="file" name="file">  
  4.     <p />  
  5.     <div>  
  6.         token:<input name="token" >  
  7.     </div>  
  8.     <p />  
  9.     <button type="submit">更新头像</button>  
  10. </form>  


IOS搞的话,这边用的是AFNetworking 3.0,所以是这样写的

[objc]  view plain  copy
  1. - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info  
  2. {  
  3.     NSLog(@"图片选中");  
  4.     //截取图片  
  5.     UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];  
  6.     NSData *imageData = UIImageJPEGRepresentation(image, 0.001);  
  7.     self.mv.portraitImageView.image = image;  
  8.       
  9.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  10.     manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"text/plain", nil nil];  
  11.     // 参数  
  12.     NSMutableDictionary *parameter = [NSMutableDictionary dictionary];  
  13.     parameter[@"token"] = "param....";  
  14.     // 访问路径  
  15.     NSString *stringURL = [NSString stringWithFormat:@"%@%@",HOSTURL,kUploadAvatar];  
  16.       
  17.     [manager POST:stringURL parameters:parameter constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {  
  18.         // 上传文件  
  19.         NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  
  20.         formatter.dateFormat = @"yyyyMMddHHmmss";  
  21.         NSString *str = [formatter stringFromDate:[NSDate date]];  
  22.         NSString *fileName = [NSString stringWithFormat:@"%@.jpg", str];  
  23.           
  24.         [formData appendPartWithFileData:imageData name:@"file" fileName:fileName mimeType:@"image/png"];  
  25.           
  26.     } success:^(AFHTTPRequestOperation *operation, id responseObject) {  
  27.         NSLog(@"上传成功");  
  28.     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
  29.         NSLog(@"上传错误");  
  30.     }];  
  31. }  


转载请注明:http://blog.csdn.net/wangqiuyun/article/details/50220465


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值