上传图片
来源:互联网 发布:南京 软件 编辑:程序博客网 时间: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);
}];
}