使用AFNetworking图片上传post带参数

本文介绍如何在iOS应用中使用AFNetworking库进行图片上传操作,包括从相机和相册选择图片的步骤。重点讲解了利用AFNetworking进行POST请求时携带图片参数的方法。

第一次做图片上传,研究了一天网上虽然有很多例子可是不是很明白。

图片上传主要就是来自照相机和相册

来自相机我们调用一下代码

 BOOL isCamera = [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear];
        if (!isCamera) {
            NSLog(@"没有摄像头");
            return ;
        }
        //从摄像头获取活动图片
        UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
        imagePicker.delegate = self;
        imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
//        imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
        imagePicker.allowsEditing = NO;
        [self presentViewController:imagePicker animated:YES completion:^{
            
        }];
来自相册就调用
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
        imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        imagePicker.delegate = self;
        imagePicker.allowsEditing = NO;
        [self  presentViewController:imagePicker animated:YES completion:^{
            
        }];
千万别忘了遵循代理

UIImagePickerControllerDelegate,UINavi<span style="font-family: Arial, Helvetica, sans-serif;">gationControllerDelegate</span>
<span style="font-family:Arial, Helvetica, sans-serif;">
</span><pre name="code" class="objc">#pragma mark 保存图片到document
- (void)saveImage:(UIImage *)tempImage WithName:(NSString *)imageName
{
    NSData* imageData = UIImagePNGRepresentation(tempImage);
    NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString* documentsDirectory = [paths objectAtIndex:0];
    // Now we get the full path to the file
    NSString* fullPathToFile = [documentsDirectory stringByAppendingPathComponent:imageName];
    // and then we write it out
    [imageData writeToFile:fullPathToFile atomically:NO];
}
#pragma mark 从文档目录下获取Documents路径
- (NSString *)documentFolderPath
{
    return [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
}
//上传图片执行的方法
-(void)uploadPictureWithImageData:(NSData *)imageData
{
    

    AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager];
    manager.responseSerializer.acceptableContentTypes=[NSSet setWithObject:@"application/json"];
    NSDictionary *parameters=@{@"uid":_uid,@"wid":_wid};
   
    [manager POST:SeverURL parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
//        图片数据不为空才传递
        if (imageData != nil) {
            [formData appendPartWithFileData:imageData name:@"pic" fileName:@"newimage.jpg"mimeType:@"image/jpeg"];
            
        }
    } success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
    }];}
// 取消相册
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    
    [picker dismissViewControllerAnimated:YES completion:NULL];
    
}



选中照片执行的代理方法
<pre name="code" class="objc">- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *img=[info objectForKey:@"UIImagePickerControllerOriginalImage"];
    
    if(picker.sourceType==UIImagePickerControllerSourceTypeCamera){
        //        UIImageWriteToSavedPhotosAlbum(img,nil,nil,nil);
    }
    [self saveImage:img WithName:[NSString stringWithFormat:@"newimage%@",@".jpg"]];
    NSString * path = [NSString stringWithFormat:@"%@/newimage.jpg",[self documentFolderPath]];
    
    NSData * imageData = UIImageJPEGRepresentation([UIImage imageWithContentsOfFile:path], 1.0);
    [self uploadPictureWithImageData:imageData];
    [self reloadWebView];
    [self dismissViewControllerAnimated:YES completion:nil];
    
}

到此上传1张图片就可以了

下面的时上传多张图片的方法
<pre name="code" class="objc">1.图片上传
-(void)uploadPictureWithImageData:(NSData *)imageData{

NSString *url = iOS_POST_REALPICTURE_URL;

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];

NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init];
[manager POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData name:@"filedata" fileName:[NSString stringWithFormat:@"%@.jpg", uuid1] mimeType:@"image/*"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSDictionary * dic = (NSDictionary*)responseObject;
NSLog(@"Success: %@", dic);
NSString * str = [dic objectForKey:@"msg"];
// NSString * str1 = [str substringWithRange:NSMakeRange(48, 36)];
NSLog(@"%@",str);
NSLog(@"message: %@", [dic objectForKey:@"message"]);
// NSMutableString *String1 = [[NSMutableString alloc] initWithString:str];
// [String1 insertString:@"," atIndex:0];
// NSString * string2 = [[NSString alloc]initWithString:String1];
// [myphotos appendFormat:string2];
[_imageArr addObject:str];
// [AutoDismissAlert autoDismissAlert:@"上传成功"];
[self reloadImage];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
// [self.alertView stopAnimating];
// [self.delegate ChartPictrueCellWithMessageSendStyle:MessageFaiure IndexPath:self.indexPath];
// self.exclamationView.hidden = NO;
[AutoDismissAlert autoDismissAlert:@"上传失败"];
[HUD removeFromSuperview];
}];
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值