使用AFN上传图片到服务器
2016-03-04 17:26
459 查看
//上传图片
+(void)postDataWithUrl:(NSString *)url params:(NSMutableDictionary *)params imageDatas:(NSArray *)images success:(void
(^)(id))success failure:(void (^)(NSError *))failure
{
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager
manager];
manager.responseSerializer = [AFJSONResponseSerializer
serializer];
[manager.responseSerializer
setAcceptableContentTypes:[NSSet
setWithObjects:@"application/json",@"text/html",@"text/javascript",@"text/xml",nil]];
[manager POST:url
parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData>
_Nonnull formData) {
if (images==nil) {
return ;
}
for (UIImage *image
in images) {
NSData *imageData =
UIImagePNGRepresentation(image);
4000
// 在网络开发中,上传文件时,是文件不允许被覆盖,文件重名
// 要解决此问题,
// 可以在上传时使用当前的系统事件作为文件名
NSDateFormatter *formatter = [[NSDateFormatter
alloc] init];
// 设置时间格式
formatter.dateFormat =
@"yyyyMMddHHmmss";
NSString *str = [formatter
stringFromDate:[NSDate
date]];
NSString *fileName = [NSString
stringWithFormat:@"%@.png", str];
/*
此方法参数
1. 要上传的[二进制数据]
2. 对应网站上[upload.php中]处理文件的[字段"file"]
3. 要保存在服务器上的[文件名]
4. 上传文件的[mimeType]
*/
[formData appendPartWithFileData:imageData
name:@"file"
fileName:fileName
mimeType:@"image/png"];
}
} success:^(AFHTTPRequestOperation *
_Nonnull operation,
id _Nonnull responseObject) {
success(responseObject);
} failure:^(AFHTTPRequestOperation *
_Nullable operation,
NSError * _Nonnull error) {
failure(error);
}];
}
+(void)postDataWithUrl:(NSString *)url params:(NSMutableDictionary *)params imageDatas:(NSArray *)images success:(void
(^)(id))success failure:(void (^)(NSError *))failure
{
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager
manager];
manager.responseSerializer = [AFJSONResponseSerializer
serializer];
[manager.responseSerializer
setAcceptableContentTypes:[NSSet
setWithObjects:@"application/json",@"text/html",@"text/javascript",@"text/xml",nil]];
[manager POST:url
parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData>
_Nonnull formData) {
if (images==nil) {
return ;
}
for (UIImage *image
in images) {
NSData *imageData =
UIImagePNGRepresentation(image);
4000
// 在网络开发中,上传文件时,是文件不允许被覆盖,文件重名
// 要解决此问题,
// 可以在上传时使用当前的系统事件作为文件名
NSDateFormatter *formatter = [[NSDateFormatter
alloc] init];
// 设置时间格式
formatter.dateFormat =
@"yyyyMMddHHmmss";
NSString *str = [formatter
stringFromDate:[NSDate
date]];
NSString *fileName = [NSString
stringWithFormat:@"%@.png", str];
/*
此方法参数
1. 要上传的[二进制数据]
2. 对应网站上[upload.php中]处理文件的[字段"file"]
3. 要保存在服务器上的[文件名]
4. 上传文件的[mimeType]
*/
[formData appendPartWithFileData:imageData
name:@"file"
fileName:fileName
mimeType:@"image/png"];
}
} success:^(AFHTTPRequestOperation *
_Nonnull operation,
id _Nonnull responseObject) {
success(responseObject);
} failure:^(AFHTTPRequestOperation *
_Nullable operation,
NSError * _Nonnull error) {
failure(error);
}];
}
相关文章推荐
- iOS-Core-Animation之十二----性能调优
- android源码集合(从网上摘抄,在此记录下)
- 图片裁剪 jcrop
- 关于Activity生命周期的理解
- 记账APP市场分析
- ST: (homework1)软件项目中令我印象深刻的错误
- 『奇葩问题集锦』Zepto 页面唤醒拨号功能点透
- 每天一个linux命令(61):wget命令
- android中通过SharedPreferences进行对象的存储
- 关于闭包,巧妙地抽象理解
- 正则表达式匹配域名、网址、url
- zookeer集群
- 最适合程序员加班吃的6大营养美食
- PHP正则:正向/反向预搜索
- 使用Homebrew管理你的mac开发包( Press RETURN to continue or any other key to abort)
- elk 实例
- 在DLL中创建窗口时一个值得注意的地方 —— UnregisterClass
- CodeForces 631D Messenger KMP算法
- Windows环境下配置Vim为Python的IDE
- Spicy 修改代码 实现双屏显示以及鼠标键盘绑定