0

こんにちは、マルチパート オブジェクトを受け入れるバックエンドがあります。画像をマルチパート オブジェクトとして投稿し、それをパラメーターとして spring mvc コントローラーに渡すために必要な方向/必要な手順を見つけるのに苦労しています。数え切れないほどの時間、Web を検索してきましたが、まだ理解するのに苦労しています。

基本的に私は iOS 開発者で、Spring バックエンドを持っています。バックエンドに保存されるパラメーターとして必要なため、画像をマルチパート オブジェクトとして送信する必要があります。

について読んでいましAFNetworkingたが、まだ確信が持てません。アプリが設計される前にバックエンドが作成された (バックエンドは契約外) ため、そこにあるものに接続しようとしています。

必要に応じて、さらに情報を提供できます。

私はAnand Kによって以下のコードを試しましたが、今HTTP Status 500では応答でこれを取得しています:

Request processing failed; 
nested exception is org.springframework.web.multipart.MultipartException: 
The current request is not a multipart request

他の「ジャンク」と同様に

Adnan Ks の提案に基づく新しい更新*

UIImage *image=[UIImage imageNamed:@"dub.png"];
NSData *imageData=UIImagePNGRepresentation(image);

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"http://website.com/upload/uploadOneBook.app?userID=12345&uploadFile="]];
[request setHTTPMethod:@"POST"];

NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];


NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: attachment; name=\"attachement\"; filename=\"%@\";",@"Image.png" ] dataUsingEncoding:NSUTF8StringEncoding]];

[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

// close form
[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];


NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

NSLog(@"returnString=%@",returnString);

また、returnString には以下が含まれます。`HTTP Status 400 - Required MultipartFile parameter 'uploadFile' is not present

4

1 に答える 1

1

AFNetworkingマルチパートオブジェクトの非常に良い例を持っているものを選びました。

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"foo": @"bar"};
NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"];

[manager POST:@"http://example.com/resources.json" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
     {
      [formData appendPartWithFileURL:filePath name:@"image" error:nil];
     } success:^(AFHTTPRequestOperation *operation, id responseObject) {
      NSLog(@"Success: %@", responseObject);
     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
     NSLog(@"Error: %@", error);
 }];
于 2013-11-21T14:03:08.867 に答える