一、服务端代码:

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

  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 相应client參数名
  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. }

二、client代码:

用html表单提交的话,通常是这种

  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,所以是这样写的

  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];
  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

AFNetworking 3.0携带參数上传文件Demo的更多相关文章

  1. android 随手记之文件+參数上传请求

    第一步:须要两个jar的支持,稍后以下给会出下载地址. 第二步:建立一个project 以下贴出最基本的代码 package com.example.testpaizhao; import java. ...

  2. 关于 tp5.0 阿里云 oss 上传文件操作

    tp5.0 结合阿里云oss 上传文件 1.引入 oss 的空间( composer install 跑下第三方拓展包及核心代码包) 备注:本地测试无误,放到线上有问题  应该是移动后的路劲(相对于服 ...

  3. spring mvc + xmlHttpRequest2.0 实现无刷新上传文件,带进度条和剩余时间

    1.springmvc支持文件上传,需要在spring-mvc.xml配置文件中加上下面的一段话: <!-- 支持上传文件 --> <bean id="multipartR ...

  4. PHP上传文件DEMO

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> <html> <head> ...

  5. Java Miniui实现批量上传文件demo 201906221520

    可能需要的jar包: 需要miniui(类似easyui). Test2019062201.jsp <%@ page language="java" contentType= ...

  6. 阿里云OSS上传文件demo

    1.安装ali-oss npm install ali-oss --save 2.demo 此例中使用到了ElementUI的el-upload组件.因为样式为自定义的 所以没有用element的自动 ...

  7. 百度 ueditor 1.2.0 注意事项 ,上传文件问题

    <script type="text/javascript" src="script/ueditor/ueditor.config.js" charset ...

  8. Spring Mvc 上传文件Demo 实例

    返得利购物. 淘宝.京东500家商城合作,包括全面的商城返利网.注冊就送5元,购物就有返利.随时提现. 同学们,新一轮的返利大潮正在慢慢靠近,让购物都认为自己在赚钱.购物,机票.游戏.酒店旅游,地方特 ...

  9. .net core 上传文件Demo

    view: <form method="post" enctype="multipart/form-data" action="@Url.Act ...

随机推荐

  1. Maven+Docker,发布到Registry

    1.配置Pom.xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEnc ...

  2. Cookie localStorage sessionStorage

    三者的异同 特性 Cookie localStorage sessionStorage 数据的生命期 可设置失效时间,默认是关闭浏览器后失效 除非被清除,否则永久保存 仅在当前会话下(tab标签页)有 ...

  3. [ BZOJ 3445 ] Roadblock

    \(\\\) \(Description\) 给出一张\(N\) 个点\(M\)条边的无向图,选择一条边使其权值翻倍,求操作后比操作前最短路长度增量最大值. \(1\le N\le 250\),\(1 ...

  4. ndk书写位置的问题

    defaultConfig { applicationId "com.chenql.helloandroidjni" minSdkVersion 22 targetSdkVersi ...

  5. Failed to resolve com.android.support:support-annotations 26.0.1

    所有当前版本的Google库都存放在 Google的Maven repository (maven.google.com),不在旧的offline-capable support repositori ...

  6. linux 卸载 mongo2.6

    要求:linux 卸载 mongo2.6 版本:linux系统:Ubuntu 16.04 mongo:  mongo 2.6.12 1.  查看安装的mongo版本和服务 # dpkg –l | gr ...

  7. linux 汇编 - 函数调用

    Linux 汇编-函数调用 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !i ...

  8. mybatis 项目配置

    第一:environments MyBatis 支持多个环境,可以任意配置: 第二:transactionManager MyBatis 支持两种类型的事务管理器:JDBC 和 MANAGED(托管) ...

  9. Linux内核中_IO,_IOR,_IOW,_IOWR宏的用法与解析

    ref from : http://blog.csdn.net/zhuxiaoping54532/article/details/49680537 main 在驱动程序里, ioctl() 函数上传送 ...

  10. sql 区分大小写查询

    sql 区分大小写查询 select * FROM [Users] where userName collate Chinese_PRC_CS_AS='ADMIN'