一、服务端代码:

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

	@AdaptBy(type=UploadAdaptor.class, args={"${app.root}/WEB-INF/tmp/user_avatar", "8192", "utf-8", "20000", "102400"})
@At
@Aop("redis")
public Object uploadAvatar(@Param("file")TempFile tf, @Param("token") String token, AdaptorErrorContext err) { // token 相应client參数名
NutMap re = new NutMap();
if (err != null && err.getAdaptorErr() != null) {
return re.setv("code", 3).setv("msg", "文件大小不符合规定");
}
if (tf == null) {
return re.setv("code", 4).setv("msg", "空文件");
} if (Strings.isBlank(token)) {
return re.setv("code", 2).setv("msg", "");// 没有token
}
String member_id = jedis().get(token);// 从redis依据token获取member_id
if (Strings.isBlank(member_id)) {
return re.setv("code", 2).setv("msg", "");// 未登录
}
File f = tf.getFile(); // 这个是保存的暂时文件
FieldMeta meta = tf.getMeta(); // 这个原本的文件信息
String oldName = meta.getFileLocalName(); // 这个时原本的文件名 PropertiesProxy property = new PropertiesProxy("/custom/my.properties"); String filename = System.currentTimeMillis() + oldName.substring(oldName.lastIndexOf("."));
StringBuffer sb =new StringBuffer(property.get("my.filepath"));
sb.append("\\avator\\");
sb.append(filename); StringBuffer sbdb =new StringBuffer("/avator/");
sbdb.append(filename); try {
Files.move(f, new File(sb.toString()));
//更新数据库
dao.update(Member.class,Chain.make("avator", sbdb.toString()),Cnd.where("member_id", "=", member_id)); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return re.setv("code", 1);
} return re.setv("code", 0).setv("msg", "");
}

二、client代码:

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

		<form action="${base}/usr/uploadAvatar" method="post"
enctype="multipart/form-data">
头像文件 <input type="file" name="file">
<p />
<div>
token:<input name="token" >
</div>
<p />
<button type="submit">更新头像</button>
</form>

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

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSLog(@"图片选中");
//截取图片
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
NSData *imageData = UIImageJPEGRepresentation(image, 0.001);
self.mv.portraitImageView.image = image; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"text/plain", nil];
// 參数
NSMutableDictionary *parameter = [NSMutableDictionary dictionary];
parameter[@"token"] = "param....";
// 訪问路径
NSString *stringURL = [NSString stringWithFormat:@"%@%@",HOSTURL,kUploadAvatar]; [manager POST:stringURL parameters:parameter constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
// 上传文件
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString *str = [formatter stringFromDate:[NSDate date]];
NSString *fileName = [NSString stringWithFormat:@"%@.jpg", str]; [formData appendPartWithFileData:imageData name:@"file" fileName:fileName mimeType:@"image/png"]; } success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"上传成功");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"上传错误");
}];
}

转载请注明: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. c#异步多线程

    1.asyncrel = delegate.BeginInvoke实现委托异步调用. 2.异步等待 asyncrel.IsCompleted用于判断是否执行完毕 or EndInvoke用于等待执行完 ...

  2. Maven 学习(1)

    Maven是什么,以及为什么要使用Maven?Maven这个词可以翻译为“知识的积累”,也可以翻译为“专 家”或“内行”.(构建 = 编写源代码+编译源代码+单元测试+生成文档+打包War+部署)Ma ...

  3. Coding iOS客户端应用源码

    Coding是国内的一家提供Git托管服务的产品,它们的客户端提供了项目和任务管理.消息和用户中心,以及一个类似论坛的功能,已经在App Store上线: https://itunes.apple.c ...

  4. hibernate注解之@Onetomany、@Manytoone、@JoinColumn

    @Onetomany用于实体类与数据库表映射中少的一方,请看下面的例子. 假设一个用户只有一种角色,用户和角色是onetomany的关系 用户实体 @Entity @Table(name=" ...

  5. Centos安装smokeping教程

    Centos安装smokeping教程 一 .安装基本依赖包 ntpdate time.windows.com #64bit rpm -Uhv http://apt.sw.be/redhat/el6/ ...

  6. NGINX+PHP-FPM7 FastCGI sent in stderr: “Primary script unknown”

    https://www.cnblogs.com/hjqjk/p/5651275.html 一开始是Nginx打开网页显示一直是拒绝访问.查看nginx日志是报错显示我的题目,然后就各种搜索解决啊! 百 ...

  7. 6 个 Linux 运维典型问题,大牛的分析解决思路在这里

    作为一名合格的 Linux 运维工程师,一定要有一套清晰.明确的解决故障思路,当问题出现时,才能迅速定位.解决问题,这里给出一个处理问题的一般思路: 重视报错提示信息:每个错误的出现,都是给出错误提示 ...

  8. sql的四种连接方式

    1.内联接.(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students ...

  9. python 单元测试中处理用例失败的情况

    今天有一个需求, 在单元测试失败的时候打印一些日志, 我们管他叫 dosomething 吧 ,反正就是做一些操作 查了下并没有查到相关的方法, 于是研究了一波unittest 的源码 发现了这个东西 ...

  10. Django - Form和ModelForm

    [TOC] 一. form介绍 1.生成页面可用的HTML标签 2. 提供input可以提交数据 3. 对用户提交的数据进行校验 4. 保留上次输入内容 5. 提供错误信息 二. 普通方式书写注册功能 ...