您的位置:首页 > 其它

上传图片

2015-11-02 22:48 232 查看
嗯 之前在网上找了很多资源,看了很多,也很乱,大概总结了一下

1)上传一张图片:(该段代码是自己项目中的一段代码,为注册模块)

AFHTTPRequestOperationManager *manager=[AFHTTPRequestOperationManager manager];;

NSDictionary *dic=@{@”tel”:self.tel,@”pwd”:self.pwd,@”shop_name”:self.shopName.text,@”address”:self.adress,@”lat”:self.lat,@”lng”:self.Ing};

NSString *fullPath = [[NSHomeDirectory() stringByAppendingPathComponent:@”Documents”] stringByAppendingPathComponent:@”currentImage.png”];

NSURL *url=[NSURL fileURLWithPath:fullPath];

[manager POST:@”http://appservice.ubi.cn/cheyouhui/merchant.php?m=Register&a=register” parameters:dic constructingBodyWithBlock:^(id formData)

{

[formData appendPartWithFileURL:url name:@”currentImage” error:nil];

} success:^(AFHTTPRequestOperation *operation, id responseObject) {

NSLog(@”Success: %@”, responseObject);

_arrRegister = [NSMutableArray arrayWithObjects:@"", nil];
EDTabBarController *root = [[EDTabBarController alloc]init];

[UIApplication sharedApplication].keyWindow.rootViewController = root;

//弹出提示框

[EDPoping showInRect:CGRectMake(80, 120, self.view.frame.size.width - 160, 100) text:@"登录成功" image:[UIImage imageNamed:@"newSuccess"]];

dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC));

//时间测试
dispatch_after(when, dispatch_get_main_queue(), ^{

[EDPoping dismiss];
});

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];


2)上传多张图片

//上传多张图片

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];
NSString *merchant_shop_id=[defaults objectForKey:@"merchant_shop_id"];
NSDictionary *dic=@{@"merchant_shop_id":merchant_shop_id};//参数
[manager POST:@"http://appservice.ubi.cn/cheyouhui/merchant.php?m=User&a=upload_shop_img" parameters:dic constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
{
if(_arr.count>0)
{
NSObject *firstObject=[_arr objectAtIndex:0];
if([firstObject isKindOfClass:[UIImage class]])
{
for(NSInteger i=0;i<_arr.count;i++)
{
UIImage *eachImage=[_arr objectAtIndex:i];
if(eachImage!=nil)
{
// 在网络开发中,上传文件时,是文件不允许被覆盖,文件重名
// 要解决此问题,
// 可以在上传时使用当前的系统事件作为文件名
NSData *eachImageData=UIImageJPEGRepresentation(eachImage, 0.5);
NSDateFormatter  *formatterr=[[NSDateFormatter alloc]init];
// 设置时间格式
formatterr.dateFormat=@"yyyyMMddHHmmss";
NSString *str=[formatterr stringFromDate:[NSDate date]];
NSString *fileName=[NSString stringWithFormat:@"%@.jpg",str];

/*
Data: 需要上传的数据
name: 服务器参数的名称
fileName: 文件名称
mimeType: 文件的类型
*/
[formData appendPartWithFileData:eachImageData name:[NSString stringWithFormat:@"file%d",i+1] fileName:fileName mimeType:@"image/jpeg"];
}
}
}
}
}success:^(AFHTTPRequestOperation *operation, id responseObject)
{
//请求成功
NSLog(@"请求成功 %@",responseObject);

}failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
//请求失败
NSLog(@"请求失败 %@",error);
}];
dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC));
//时间测试
dispatch_after(when, dispatch_get_main_queue(), ^{
[MBProgressHUD showSuccess:@"上传成功"];
});
[self.navigationController popViewControllerAnimated:YES];


}

又如

3)

- (IBAction)upLoad

{

// 创建一个管理者

AFHTTPRequestOperationManager *manger = [AFHTTPRequestOperationManager manager];

// 设置参数

NSMutableDictionary *params = [NSMutableDictionary dictionary];

params[@”username”] = @”123”;

params[@”pwd”] = @”123”;

// 设置URL
NSString *url = @"http://192.168.15.56:8080/MJServer/upload";
[manger POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

注意:
在发送请求之前会自动调用这个block
需要在这个block中添加文件参数到formData中
NSData *fileData = UIImageJPEGRepresentation(self.imageV.image, 1.0);
[formData appendPartWithFileData:fileData name:@"file" fileName:@"image.png" mimeType:@"image/png"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"上传成功");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"上传失败");
}];


}

注意:

1.保留照片的质量

NSData *fileData = UIImageJPEGRepresentation(self.imageV.image, 1.0);

2.AFN不能监听文件的上传进度,ASI可以监听文件的上传进度。

3.需要上传的文件的具体数据

FileData : 需要上传的文件的具体数据

name : 服务器那边接收文件用的参数名

fileName : (告诉服务器)所上传文件的文件名

mimeType : 所上传文件的文件类型

NSData *fileData = UIImageJPEGRepresentation(self.imageV.image, 1.0);

[formData appendPartWithFileData:fileData name:@”file” fileName:@”image.png” mimeType:@”image/png”];

4.需要上传的文件的URL路径

FileURL : 需要上传的文件的URL路径

name : 服务器那边接收文件用的参数名

fileName : (告诉服务器)所上传文件的文件名

mimeType : 所上传文件的文件类型

NSURL *url = [[NSBundle mainBundle] URLForResource:@”itcast” withExtension:@”txt”];

[formData appendPartWithFileURL:url name:@”file” fileName:@”test.txt” mimeType:@”text/plain” error:nil];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: