这些都是笔者项目中使用到的代码,上传图片测试成功
- 上传单张图片
// 拍完照,点击使用照片(use photo)按钮时系统会调用该方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
UIImage *image = info[UIImagePickerControllerOriginalImage];
[self dismissViewControllerAnimated:YES completion:nil];
// 1.上传图片
NSMutableDictionary *parametersDict = [NSMutableDictionary dictionary];
parametersDict[@"userId"] = [NSString stringWithFormat:@"%ld", [FKLocalDataManager shareManager].userBasicInfo.id];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString *fileName = [NSString stringWithFormat:@"%@.png",[formatter stringFromDate:[NSDate date]]];
parametersDict[@"name"] = fileName;
NSString *urlString = [BASIC_URL stringByAppendingUrlComponent:@"/file/singlefileUpload"];
FKProgressHUD *hud = [FKProgressHUD showHUDAddedTo:self.view title:@"上传中..." model:MBProgressHUDModeText];
[self.manager POST:urlString parameters:parametersDict constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
NSData *imageData = UIImageJPEGRepresentation(image, 0.5);
[formData appendPartWithFileData:imageData name:@"file" fileName:fileName mimeType:@"image/jpeg"];
} progress:^(NSProgress * _Nonnull uploadProgress) {
dispatch_async(dispatch_get_main_queue(), ^{
hud.detailsLabel.text = [NSString stringWithFormat:@"上传%.1lf%%", uploadProgress.fractionCompleted * 100];
});
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
// 1.更新用户基本信息
[FKLocalDataManager shareManager].userBasicInfo.picUrl = responseObject[@"content"];
[[FKLocalDataManager shareManager] updateUserBasicInfoWith:[FKLocalDataManager shareManager].userBasicInfo];
// 2.提示上传成功
[hud hideAnimated:YES afterDelay:1.0];
// 3.更新头像
self.avatarImgV.image = image;
// 4.将图片存入沙盒中
[[SDWebImageManager sharedManager] saveImageToCache:image forURL:[NSURL URLWithString:[BASIC_URL stringByAppendingUrlComponent:[FKLocalDataManager shareManager].userBasicInfo.picUrl]]];
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
[hud hideAnimated:NO];
[NSObject handleExceptionWithError:error];
}];
}
- 多图片上传
#pragma mark - 下一步
- (void)nextStepBtnDidClick:(UIButton *)sender
{
if (![self.nameTF hasText])
{
[FKProgressHUD showHUDAddedTo:self.view title:@"姓名不能为空" model:MBProgressHUDModeText];
return;
}
if (![self.IDCardTF hasText])
{
[FKProgressHUD showHUDAddedTo:self.view title:@"身份证不能为空" model:MBProgressHUDModeText];
return;
}
if (self.uploadIDCardFrontBtn.imageView.image == nil)
{
[FKProgressHUD showHUDAddedTo:self.view title:@"身份证正面照片不能为空" model:MBProgressHUDModeText];
return;
}
if (self.uploadIDCardReverseBtn.imageView.image == nil)
{
[FKProgressHUD showHUDAddedTo:self.view title:@"身份证反面照片不能为空" model:MBProgressHUDModeText];
return;
}
if (self.uploadGroupPhotoBtn.imageView.image == nil)
{
[FKProgressHUD showHUDAddedTo:self.view title:@"手持身份证照片不能为空" model:MBProgressHUDModeText];
return;
}
// 图片取名称
NSMutableArray <NSString *> *fileNames = [NSMutableArray array];
NSTimeInterval timeInterval = [NSDate timeIntervalSinceReferenceDate];
for (int i = 0; i < 3; i++) {
NSString *fileName = [NSString stringWithFormat:@"%ld.png", (NSInteger)++timeInterval];
[fileNames addObject:fileName];
}
// 图片压缩
NSMutableArray <NSData *> *images = [NSMutableArray array];
[images addObject:UIImageJPEGRepresentation(self.uploadIDCardFrontBtn.imageView.image, 0.5)];
[images addObject:UIImageJPEGRepresentation(self.uploadIDCardReverseBtn.imageView.image, 0.5)];
[images addObject:UIImageJPEGRepresentation(self.uploadGroupPhotoBtn.imageView.image, 0.5)];
NSMutableDictionary *parametersDict = [NSMutableDictionary dictionary];
parametersDict[@"driverId"] = [FKLocalDataManager shareManager].userId;
parametersDict[@"chineseName"] = self.nameTF.text;
parametersDict[@"idCard"] = self.IDCardTF.text;
parametersDict[@"idCardFrontPic"] = fileNames[0];
parametersDict[@"idCardBackPic"] = fileNames[1];
parametersDict[@"idCardHandPic"] = fileNames[2];
NSString *urlString = [BASIC_URL stringByAppendingUrlComponent:@"/driver/update"];
FKProgressHUD *hud = [FKProgressHUD showHUDAddedTo:self.view title:@"上传中..." model:MBProgressHUDModeText];
[self.manager POST:urlString parameters:parametersDict constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
[formData appendPartWithFileData:images[0] name:@"idCardFrontPic" fileName:fileNames[0] mimeType:@"image/jpeg"];
[formData appendPartWithFileData:images[1] name:@"idCardBackPic" fileName:fileNames[1] mimeType:@"image/jpeg"];
[formData appendPartWithFileData:images[2] name:@"idCardHandPic" fileName:fileNames[2] mimeType:@"image/jpeg"];
} progress:^(NSProgress * _Nonnull uploadProgress) {
dispatch_async(dispatch_get_main_queue(), ^{
hud.detailsLabel.text = [NSString stringWithFormat:@"上传%.1lf%%", uploadProgress.fractionCompleted * 100];
});
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (requestResult)
{
FKLog(@"responseObject = %@", responseObject);
// 1.提示上传成功
hud.detailsLabel.text = @"数据上传成功";
[hud hideAnimated:YES afterDelay:1];
hud.completionBlock = ^{
// 2.进入下个界面
FKAddCarTVC *vc = [[FKAddCarTVC alloc] init];
vc.IDCardNo = self.IDCardTF.text;
[self.navigationController pushViewController:vc animated:YES];
};
}else
{
hud.detailsLabel.text = responseObject[@"message"];
[hud hideAnimated:YES afterDelay:1.0];
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
[hud hideAnimated:NO];
[NSObject handleExceptionWithError:error];
}];
}
- 相关文章
参考文章
网友评论