上传图片

来源:互联网 发布:南京 软件 编辑:程序博客网 时间:2024/05/16 19:16


  当前这个项目比较特殊, 正常使用AFN上传图片只有调用AFN方法就行, 但是这个项目的后台对上传的数据流没有锦绣任何处理, 所以不能拼接像  /r/n 以及--

  最后公司大神对 AFN 做了修改才上传成功. 

   修改如下  :

  1.   在  AFURLRequestSerialization . h    文件中. 添加 

   

// 原有的方法

- (void)appendPartWithHeaders:(NSDictionary *)headers

                         body:(NSData *)body;

// 自己添加的方法

- (void)appendPartWithHeadersNoBoundary:(NSDictionary *)headers

                                   body:(NSData *)body;


  2.   在  AFURLRequestSerialization . m   文件中. 添加 方法

// 原有的方法  750行

- (void)appendPartWithHeaders:(NSDictionary *)headers

                         body:(NSData *)body

{

    NSParameterAssert(body);


    AFHTTPBodyPart *bodyPart = [[AFHTTPBodyPartalloc] init];

    bodyPart.stringEncoding =self.stringEncoding;

    bodyPart.headers = headers;

    bodyPart.boundary =self.boundary;

    bodyPart.bodyContentLength = [bodylength];

    bodyPart.body = body;


    [self.bodyStreamappendHTTPBodyPart:bodyPart];

}



// 自己添加的方法

- (void)appendPartWithHeadersNoBoundary:(NSDictionary *)headers

                                   body:(NSData *)body

{

    NSParameterAssert(body);

    

    AFHTTPBodyPart *bodyPart = [[AFHTTPBodyPartalloc] init];

    bodyPart.stringEncoding =self.stringEncoding;

    bodyPart.headers = headers;

    bodyPart.boundary =@"";

    bodyPart.bodyContentLength = [bodylength];

    bodyPart.body = body;

    

    [self.bodyStreamappendHTTPBodyPart:bodyPart];

}



3 替代原有方法

 

// 原来的方法    549行

//static NSString * const kAFMultipartFormCRLF = @"\r\n";  

// 自己添加的方法

staticNSString * const kAFMultipartFormCRLF =@"";

// 原来的方法

//static inline NSString * AFMultipartFormInitialBoundary(NSString *boundary) {

//    return [NSString stringWithFormat:@"--%@%@", boundary, kAFMultipartFormCRLF];

//}

// 自己添加的方法

staticinline NSString * AFMultipartFormInitialBoundary(NSString *boundary) {

   return [NSStringstringWithFormat:@"%@%@", boundary,kAFMultipartFormCRLF];

}



-(void)postImage:(UIImage *)image{

    

    NSString *urlStr =@"";

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanager];

    manager.requestSerializer.timeoutInterval =30;

    

    [managerPOST:urlStr parameters:nilconstructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

       // 格式化时间

//        NSDateFormatter *myFormatter = [[NSDateFormatter alloc]init];

//        myFormatter.dateFormat = @"yyyyMMddhhmmss";

//        NSString *imageName = [myFormatter stringFromDate:[NSDate date]];


        

   UIImage *scaleImage = [selfscaleFromImage:image toSize:CGSizeMake(240,240)];

       NSData *imageData = UIImageJPEGRepresentation(scaleImage, 0.1);

        [formData appendPartWithHeadersNoBoundary:nilbody:imageData];

        

        

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

       NSDictionary *data = (NSDictionary *)responseObject;

        NSLog(@" jiegauo  %@",data[@"success"]);

        

       if ([data[@"success"]isEqualToString:@"true"]) {

           NSLog(@"成功");

           NSLog(@"%@",data[@"data"]);

           NSString *imageUrl = data[@"data"];

            [self.imageURLAryaddObject:imageUrl];

            

        }

   

        

    }failure:^(AFHTTPRequestOperation *operation,NSError *error) {

       NSLog(@"失败");

       NSLog(@"%@",error);

        

    }];


}



0 0
原创粉丝点击