0

私は画像アップロードアプリに取り組んでいます。アップロード部分が機能するようになり、UITextFieldからのコメントをPOSTに含めたいと思います。

UITextFieldの名前はcommentTextです。 myURLviewDidLoadで定義されます。

- (IBAction)startUpload {

uploadButton.enabled = NO;
NSData *imageData = UIImageJPEGRepresentation(imageView.image, 0.7);

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:myURL]];
[request setHTTPMethod:@"POST"];

//Trying to add comment from uitextfield commentText
NSLog(@"Comment Text: %@", [commentText text]);
NSString *comment = [NSString stringWithFormat:@"comment=%@", [commentText text]];

NSString *boundary = [NSString stringWithString:@"---------------------------94729573838364809882205829479"];
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--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"test.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

//for comment
[body appendData:[comment dataUsingEncoding:NSUTF8StringEncoding]];
//[body appendData:[NSData dataWithBytes: [comment UTF8String] length: [comment length]]];

NSLog(@"comment: %@", comment);
[request addValue:[NSString stringWithFormat:@"%i", [body length]] forHTTPHeaderField:@"Content-Length"];

[request setHTTPBody:body];

NSURLResponse *response;
NSError *error;

NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"responseData: %@", responseData);
}

このコードの多くは、私が読んださまざまな投稿からまとめられており、正直なところ、境界については何も知りません(まだ)。クロージングバウンダリーをシフトしてみましたが、違いはありませんでした。PHPを使用して、$ _ POST、$ _ GET、および$ _REQUESTの値を確認しましたが、コメントはありません(少なくとも、$ _ REQUESTに表示されますね?)。私はそこに他の同じ質問があることを知っています(http://stackoverflow.com/questions/9509419/xcode-easiest-way-to-send-data-from-ios-textfield-for-example-to-a-remote- datab)、私は読んだことがありますが、これを理解できないようです。

ありがとう、

マーク

編集:追加しようとしているコメントは、境界で再度区切る必要があり、コンテンツタイプを宣言する必要がありますか?またはそれらの線に沿った何か?

4

1 に答える 1

0

音声データとともにさまざまなフィールドを POST に追加します。これが方法です。

  NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@", BASE_URL]];
  NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

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

  NSMutableData *requestData = [NSMutableData data];

  for (NSString *key in [voicenoteData allKeys]) {
    if (![key isEqualToString:@"audio_data"]) {            
      [requestData appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
      [requestData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", key] dataUsingEncoding:NSUTF8StringEncoding]];
      [requestData appendData:[[NSString stringWithFormat:@"%@\r\n", [voicenoteData objectForKey:key]] dataUsingEncoding:NSUTF8StringEncoding]];
    }
  }

  [requestData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
  [requestData appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"audio_file\"; filename=\"recording.m4a\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
  [requestData appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
  [requestData appendData:[voicenoteData objectForKey:@"audio_data"]];
  [requestData appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];


  request.HTTPBody = requestData;
于 2012-05-23T20:55:18.707 に答える