AFNetworking 3.0携带參数上传文件Demo
一、服务端代码:
服务端是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的更多相关文章
- android 随手记之文件+參数上传请求
第一步:须要两个jar的支持,稍后以下给会出下载地址. 第二步:建立一个project 以下贴出最基本的代码 package com.example.testpaizhao; import java. ...
- 关于 tp5.0 阿里云 oss 上传文件操作
tp5.0 结合阿里云oss 上传文件 1.引入 oss 的空间( composer install 跑下第三方拓展包及核心代码包) 备注:本地测试无误,放到线上有问题 应该是移动后的路劲(相对于服 ...
- spring mvc + xmlHttpRequest2.0 实现无刷新上传文件,带进度条和剩余时间
1.springmvc支持文件上传,需要在spring-mvc.xml配置文件中加上下面的一段话: <!-- 支持上传文件 --> <bean id="multipartR ...
- PHP上传文件DEMO
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> <html> <head> ...
- Java Miniui实现批量上传文件demo 201906221520
可能需要的jar包: 需要miniui(类似easyui). Test2019062201.jsp <%@ page language="java" contentType= ...
- 阿里云OSS上传文件demo
1.安装ali-oss npm install ali-oss --save 2.demo 此例中使用到了ElementUI的el-upload组件.因为样式为自定义的 所以没有用element的自动 ...
- 百度 ueditor 1.2.0 注意事项 ,上传文件问题
<script type="text/javascript" src="script/ueditor/ueditor.config.js" charset ...
- Spring Mvc 上传文件Demo 实例
返得利购物. 淘宝.京东500家商城合作,包括全面的商城返利网.注冊就送5元,购物就有返利.随时提现. 同学们,新一轮的返利大潮正在慢慢靠近,让购物都认为自己在赚钱.购物,机票.游戏.酒店旅游,地方特 ...
- .net core 上传文件Demo
view: <form method="post" enctype="multipart/form-data" action="@Url.Act ...
随机推荐
- 下载谷歌地图封锁IP解决办法
采用重新拨号,动态改变IP的方式.可以使用软件<易好用IP自动更换软件>
- MVC系列学习(五)-传递数据 与 接收数据
1.控制器向视图传递数据 a.使用ViewData b.使用ViewBag c.使用Model 方式二: d.使用TempData 2.为什么在控制器中设置了一些属性,在视图中可以接受 3.Actio ...
- Server Tomcat v8.0 Server at localhost failed to start 问题解决方法?
bi编程jsp servlet 第一个程序: HelloServlet 运行错误 404: 十月 28, 2017 11:25:14 上午 org.apache.tomcat.util.digest ...
- Android项目实战_手机安全卫士进程管理
###1.设备进程信息获取获取设备运行进程 ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVI ...
- JS——html基本结构
document.title——文档标题 document.head——文档头标签 document.body——文档的主体 document.documentElement 表示整个文档的html标 ...
- jsp 文件下载
有的时候一个模板的下载,这种简单的下载服务端已存在文件功能,就可以方便的通过jsp文件下载的方式来轻松实现. //jsp 页面 js /** * 导出角色 */ function exportRole ...
- codeforces_731D_(前缀和)(树状数组)
D. 80-th Level Archeology time limit per test 2 seconds memory limit per test 256 megabytes input st ...
- -bash:whois:command not found
在centOS 下,如果出现-bash:whois:command not found的问题, 则yum install 安装whois软件 yum install -y jwhois 包名是jwho ...
- 《啊哈算法》中P81解救小哈
题目描述 首先我们用一个二维数组来存储这个迷宫,刚开始的时候,小哼处于迷宫的入口处(1,1),小哈在(p,q).其实这道题的的本质就在于找从(1,1)到(p,q)的最短路径. 此时摆在小哼面前的路有两 ...
- 洛谷——P2341 [HAOI2006]受欢迎的牛//POJ2186:Popular Cows
P2341 [HAOI2006]受欢迎的牛/POJ2186:Popular Cows 题目背景 本题测试数据已修复. 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所 ...