代码之家  ›  专栏  ›  技术社区  ›  krischu

使用AFNetworking在单个请求中上传多个图像

  •  1
  • krischu  · 技术社区  · 11 年前

    我想在一个请求中上传多个图像,我设法在发送单个图像数据时使其工作。这是我发送单个图像数据的代码:

    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。这是将接收包含多个图像的请求的Web服务/端点:

    @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";
    }
    

    我的问题是如何使用具有多个图像的AFNetworking进行multipartForm请求。

    1 回复  |  直到 11 年前
        1
  •  4
  •   krischu    11 年前

    我发现,通过使用相同名称的附加数据,会使数据在服务器端成为Array。因此:

    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[]图像 " .