1

画像をWebサービスにアップロードしたいのですが、アップロードすると画像の名前だけが保存され、画像は保存されません。

参照用のコードと画像を見つけてください。

    - (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [self dismissModalViewControllerAnimated:YES];

    NSData *image = UIImageJPEGRepresentation([info objectForKey:UIImagePickerControllerOriginalImage], 0.1);

    NSMutableString *urlString = [[NSMutableString alloc] initWithFormat:@"name=thefile&&filename=recording"];
    [urlString appendFormat:@"%@", image];
    NSData *postData = [urlString dataUsingEncoding:NSASCIIStringEncoding
                               allowLossyConversion:YES];
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
    NSString *baseurl = @"http://192.168.2.34/Service1.svc/upload/filename.png";

    NSURL *url = [NSURL URLWithString:baseurl];
    NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];
    [urlRequest setHTTPMethod: @"POST"];
    [urlRequest setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [urlRequest setValue:@"application/x-www-form-urlencoded"
      forHTTPHeaderField:@"Content-Type"];
    [urlRequest setHTTPBody:postData];

    NSURLConnection *connection = [NSURLConnection connectionWithRequest:urlRequest delegate:self];
    [connection start];

    NSLog(@"Started!");

}

画像をアップロードすると、画像の名前が次のように表示されます。

ここに画像の説明を入力

しかし、画像を開くとnilが表示されます。

ここに画像の説明を入力

何が問題なのかわかりません。親切に助けてください。

前もって感謝します。

4

2 に答える 2

0

問題は次のとおりです。

[urlString appendFormat:@"%@", image];

投稿データで NSData オブジェクトの説明をリンクしていますが、これはエラーです。バイナリ ファイルをアップロードするには、データをシリアル化するか、multipart/form-data POST リクエストを使用する必要があります。

これらは2つの解決策です:

1) このカテゴリで画像 NSData を Base64 に変換します (テスト済み)

https://github.com/l4u/NSData-Base64

そして、する

[urlString appendFormat:@"&image=%@", [image base64EncodedString]];

(PHPで)を使用して、サーバー上でbase64データを元に変換する必要があります

http://www.php.net/manual/en/function.base64-decode.php

2) iphone プログラミングで HTTP サーバーへのファイルアップロードを実装 する

これが役立つことを願っています。

于 2013-07-11T12:12:11.083 に答える