2013-08-28 3 views
9

일부 이미지를 서버에 업로드하려고하므로 AFNetWork를 사용하여 파일을 게시합니다. 코드는 여기에 있습니다 :AF 여러 파일 업로드 업로드

UIImage *image1 = [UIImage imageNamed:@"about_app"]; 
UIImage *image2 = [UIImage imageNamed:@"alter"]; 
NSArray *array = @[image1,image2]; 
__block int i = 0; 
NSMutableURLRequest *request = [[AFNetWorkSingleton shareInstance] multipartFormRequestWithMethod:@"POST" path:@"Mindex/getimg" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>formData){ 
for(UIImage *eachImage in array) 
{ 
    NSData *imageData = UIImageJPEGRepresentation(eachImage,0.5); 
    [formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"file%d",i ] fileName:[NSString stringWithFormat:@"abc%d.jpg",i ] mimeType:@"image/jpeg"]; 
    i++; 
} 
}]; 

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject){.....} 

이것은 작동하지 않습니다! 그러나 아래의 코드를 사용하여 multipartFormRequestWithMethod 메서드 내에서 "for"문을 바꿔 보면 모든 것이 올바르게 진행되었습니다! 하지만 이미지 배열의 수를 확인할 수 없다면 "for"문을 사용해야하며 내 코드에 문제가 있습니까?

[formData appendPartWithFileData:UIImageJPEGRepresentation([array objectAtIndex:0], 0.5) name:@"image1" fileName:@"image1.jpg" mimeType:@"image/jpeg"]; 
[formData appendPartWithFileData:UIImageJPEGRepresentation([array objectAtIndex:1], 0.5) name:@"image2" fileName:@"image2.jpg" mimeType:@"image/jpeg"]; 

답변

12

블록 내에 변수 i을 넣습니다. 또한 파일 이름을 abc에서 file으로 변경했습니다.

UIImage *image1 = [UIImage imageNamed:@"about_app"]; 
UIImage *image2 = [UIImage imageNamed:@"alter"]; 
NSArray *array = @[image1,image2]; 

NSMutableURLRequest *request = [[AFNetWorkSingleton shareInstance] multipartFormRequestWithMethod:@"POST" path:@"Mindex/getimg" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>formData){ 
int i = 0; 
for(UIImage *eachImage in array) 
{ 
    NSData *imageData = UIImageJPEGRepresentation(eachImage,0.5); 
    [formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"file%d",i ] fileName:[NSString stringWithFormat:@"file%d.jpg",i ] mimeType:@"image/jpeg"]; 
    i++; 
} 
}]; 
4

것처럼 MIME 타입 설정 서버에 모든 종류의 파일을 업로드 루프 구문

UIImage *image1 = [UIImage imageNamed:@"about_app"]; 
    UIImage *image2 = [UIImage imageNamed:@"alter"]; 
    NSArray *array = @[image1,image2]; 

    NSMutableURLRequest *request = [[AFNetWorkSingleton shareInstance] multipartFormRequestWithMethod:@"POST" path:@"Mindex/getimg" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>formData){ 
    for(int i=0;i<[array count];i++) 
    { 
     UIImage *eachImage = [array objectAtIndex:i]; 
     NSData *imageData = UIImageJPEGRepresentation(eachImage,0.5); 
     [formData appendPartWithFileData:imageData name:[NSString stringWithFormat:@"file%d",i ] fileName:[NSString stringWithFormat:@"abc%d.jpg",i ] mimeType:@"image/jpeg"]; 
    } 
    }]; 

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 
    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject){.....} 
+0

내가 하나를 원하는 경우 * * 이름 **에 여러 파일이 포함될 수 있습니까? – chenzhongpu

-3

의 변경 -> 파일/*

[formData appendPartWithFileData:Data 
          name:@"keyName" 
          fileName:@"yourFileName"  
          mimeType:@"file/*"]; 
+0

당신이 대답 한 것은 내가 한 것에 대한 것이 아닙니다. – lixiaoyu