您的位置:首页 > 其它

使用AFNetworking图片上传post带参数

2015-03-18 11:53 501 查看
第一次做图片上传,研究了一天网上虽然有很多例子可是不是很明白。

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

来自相机我们调用一下代码
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];
}];
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: