1

1回のリクエストで複数の画像をアップロードしたいのですが、単一の画像データを送信するときにそれを機能させることができました。単一の画像データを送信するための私のコードは次のとおりです。

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 リクエストを作成する方法です。

4

1 に答える 1

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 が「 image 」と同じ名前タグを持つフォーム データ マルチパート リクエストに追加されることを考慮してください。サーバー側では配列「CommonsMultipartFile[] image」として扱われます。

于 2013-06-10T05:40:34.750 に答える