之前做过的一个社交软件有上传图片的功能个人建议用AFN当然自己写更好.
话不多说直接上代码,这里用的是post下面是需要传入的参数
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[@"imgType"] = @"1";
dict[@"accountId"] =userID;
dict[@"content"] = self.textView.text;
dict[@"pubLat"] = @(self.latitude);
dict[@"pubLng"] = @(self.longitude);
dict[@"hobbyId"] = @(index);
NSString *urlStr = KbaseUrl;
NSMutableArray *imageDatalist = [NSMutableArray array];
然后把图片的二进制数据添加进来
for (int i = 0;i<self.imageListArr.count;i++){
NSDictionary *dict = self.imageListArr[i];
UIImage *image = [self getImageWith:dict[@"asset"]];
//把图片转换为二进制流其中0.4的这个参数是可以自己设定的可以看看传到后台的图片大小,来设置一个合适的值,另外还要有一种思路是可以让后台统一做处理
NSData *imageData = UIImageJPEGRepresentation(image, 0.4);
[imageDatalist addObject:imageData];
}
[[DBJNetworkTool sharedNetworkTool] POST:urlStr parameters:dict constructingBodyWithBlock:^(id_Nonnull formData) {
//循环吧二进制数据加入到formdata中
for (int i = 0;i<imageDatalist.count;i++) {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *fileName = [NSString stringWithFormat:@"%@.png",[formatter stringFromDate:[NSDate date]]];
[formData appendPartWithFileData:imageDatalist[i] name:@"myfiles" fileName:fileName mimeType:@"image/png"];
}
} progress:^(NSProgress * _Nonnull uploadProgress) {
NSLog(@"%@",uploadProgress);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
dispatch_async(dispatch_get_main_queue(), ^{
[_indicator stopAnimating];
});
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
dispatch_async(dispatch_get_main_queue(), ^{
});
}];
网友评论