关于上传表单形式的图片

之前做过的一个社交软件有上传图片的功能个人建议用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

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

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(), ^{

});

}];

你可能感兴趣的:(关于上传表单形式的图片)