iOS が初めてで、サーバーに画像をアップロードしようとしています。
オンラインで「チュートリアル」を見つけましたが、iPhone 3G を使用しても期待どおりに動作しますが、3GS では動作しません。どちらも 4.2.1 を実行しています。
このメソッドは、ユーザーがUpload
ライブラリから画像を選択するか、新しい画像を取得した後にボタンをクリックすると呼び出されます。
- (IBAction)pushUpload {
NSData *imageData = UIImageJPEGRepresentation(imageView.image, 0.9);
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:myURL]];
[request setHTTPMethod:@"POST"];
NSString *boundary = [NSString stringWithString:@"---------------------------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--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\".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]];
[request setHTTPBody:body];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSLog(@"ReturnData: %@", returnData);
}
myURL
サーバー側のphpスクリプトへのURLを持つNSStringです。これは、FlipsideViewController xib のテキスト フィールドから来ています。
前述したように、これは 3G では正常に機能しますが、3GS では機能しません。returnData
3G で実行中にログインする<>
と、3GS で実行中に が表示されます(null)
。何がどうなるかはまだわかりません<>
が、 よりも明らかに優れてい(null)
ます。
「正常に動作する」とは、画像がサーバーにアップロードされ、処理されて保存されることを意味します。
私がここにいる限り、画像をサーバーにアップロードするより良い方法は何ですか?
助けてくれてありがとう、
マーク