iOS上传图片到服务器

iOS上传图片或者头像到服务器。
这里介绍用AFN上传图片的例子,并给出注意事项,需要注意的地方已经以注释的方式写在代码中了。

UIImage * image = [message valueForKey:@"originalImage"];
    NSString *image_string=nil;
    if ([[UIDevice currentDevice].systemVersion floatValue]>=7.0) {
 image_string = [(UIImageJPEGRepresentation(image, 0.1)) base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
            }else{
image_string = [(UIImageJPEGRepresentation(image, 0.1)) base64Encoding];
            }
    AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"http://appweb.app.cn"]];
    manager.requestSerializer.timeoutInterval = 100;
    NSData *nataBig = (UIImageJPEGRepresentation(image, 1.0));
    NSData *nataSmall = (UIImageJPEGRepresentation(image, 0.1));
    ;
    NSLog(@"压缩前=%ld  压缩后=%lu",nataBig.length,(unsigned long)nataSmall.length);
    NSLog(@"压缩比=%@%%",[NSString stringWithFormat:@"%.2f",(nataSmall.length)/(nataBig.length)]);
    ;
    NSMutableDictionary *paras = [[NSMutableDictionary alloc]init];
    [paras setValue:self.msgType forKey:@"msgType"];
    //以file的形式上传,这里的key很重要"accessory",这个是和服务器端对应的,千万不能乱写,一定要看接口文档,不然会上传失败
    [paras setValue:(__bridge id)((__bridge FILE *)(image_string)) forKey:@"accessory"];
    [paras setValue:[BLLUser getPushToken] forKey:@"senderPushToken"];
    [paras setValue:self.receiverPushToken forKey:@"receiverPushToken"];
    [paras setObject:[Base getKey] forKey:@"ukey"];
    //@"chat/chat.htm"为上传路径
    AFHTTPRequestOperation * operation = [manager POST:@"chat/chat.htm" parameters:paras constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
        {
            NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
            formatter.dateFormat = @"yyyyMMddHHmmss";
            NSString *str = [formatter stringFromDate:[NSDate date]];
            NSString *fileName = [NSString stringWithFormat:@"%@.jpg", str];

   //fileName这里取当前时间戳

   //accessory还是一样和服务端对应,具体看你自己的接口文档
   //mimeType选择@"image/jpeg",意思是告诉服务端,我上传的文件类型是图片类型,后缀是jpeg格式的,这里需要注意
        [formData appendPartWithFileData:(UIImageJPEGRepresentation(image, 0.1)) name:@"accessory" fileName:fileName mimeType:@"image/jpeg"];

        }
        success:^(AFHTTPRequestOperation *operation, NSData * responseObject)
        //上传成功block
       {

           NSLog(@"上传成功!");
        NSError * error;
        NSDictionary * dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:&error];
           //json解析得到存储服务器返回的字典
        NSLog(@"图片状态 :%@",dic[@"msg"]);
                    }
        failure:^(AFHTTPRequestOperation *operation, NSError *error)
                {
                    //连接服务器失败
                    NSLog(@"图片发送失败");

                }];
    operation.responseSerializer = [AFHTTPResponseSerializer serializer];
    [operation start];

代码可以直接copy,改baseURL和路径,已经上传的关键参数。就可以上传成功。

另外博主维护一个iOS开发技术支持群:479259423,进群必须改名,群名片格式:城市-iOS-名字,例如广州-iOS-文明。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值