2013-04-11 3 views
1

Я хочу загрузить несколько изображений в один запрос, мне удается заставить его работать при отправке отдельных данных изображения. здесь мой код для отправки одиночных данных изображения:Загрузка нескольких изображений в одном запросе с использованием AFNetworking

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseUrl: my_url ]; 

NSMutableRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:nil 
parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) { 
    [formData appendPartWithFileData: my_imageData name:@"image" fileName: @"myImage.jpg" mimeType:@"image/jpeg"]; 
}]; 

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest: request]; 

[operation start]; 

на стороне сервера, я использую Spring MVC. это веб-сервис/конечная точка, которая получит запрос, который содержит несколько изображений:

@RequestMapping(value="/test-multiple-upload/{collateralid}", method = RequestMethod.POST) 
public @ResponseBody String multipartfilesUpload(
     @PathVariable("collateralid") Long collId, 
     @RequestParam("images[]") CommonsMultipartFile[] images) { 

    //proccess the image data. save to local or to DB 


    return "uploaded successful"; 
} 

Моего вопроса заключается в том, как сделать запрос multipartForm использования AFNetworking с многократными изображениями.

ответ

4

Я узнал, что, используя то же имя добавленных данных, данные будут переданы в виде массива на стороне сервера. Поэтому:

NSArray *imageArray; 
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseUrl: my_url ]; 

NSMutableRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:nil 
parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) { 
     for(UIImage *img in imageArray) 
     { 
      [formData appendPartWithFileData: my_imageData name:@"image" fileName:@"myImage.jpg" mimeType:@"image/jpeg"]; 
     } 
}]; 

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest: request]; 

[operation start]; 

рассматривает каждый ImageData будет добавлен в данной форме многочастного запроса с теми же именем, как теги «изображений». На стороне сервера он будет обрабатываться как массив, «CommonsMultipartFile [] image».

Смежные вопросы