0

iPhoneアプリのASIHTTPRequestライブラリを使用してサーバーに画像をアップロードしたい。

画像のアップロードでは、ASIFormDataRequestを使用してサーバーにアップロードしています。

アプリで以下のコードを試しましたが、機能せず、画像がサーバーにアップロードされませんでした。

NSURL *url = [NSURL URLWithString:@"http://www.anglerdemo.com/Appln/Aghaven_iphone/Uploadphoto.php"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
request.requestMethod = @"POST";
NSString *fileName = @"iphone.jpg";
[request addPostValue:fileName forKey:@"name"];

// Upload an image
UIImage *img = [UIImage imageNamed:fileName];
NSData *imageData = UIImageJPEGRepresentation(img, 90);
NSLog(@"imageData ==> %@", imageData);
[request setData:imageData withFileName:fileName andContentType:@"image/jpeg" forKey:@"image"];
[request setDelegate:self]; 
[request startAsynchronous];

アプリで上記のコードを試しましたが、リクエストは正常に実行され、ASIHTTPRequestの「requestFinished」デリゲートメソッドでアラートメッセージが表示されました。しかし、画像はサーバーにアップロードされませんでした。

- (void)requestFinished:(ASIHTTPRequest *)request
 {

[[[[UIAlertView alloc] 
   initWithTitle:@"Message" 
   message:@"Success!!!" 
   delegate:self 
   cancelButtonTitle:@"OK" 
   otherButtonTitles:nil] 
  autorelease] 
 show];

NSLog(@"success ==> ");
}

アップロード用のphpファイルスクリプトを試しました。以下をご覧ください。

<?php
   $uploaddir = 'upload_files/';
   $file = basename($_FILES['image']['name']);
   $uploadfile = $uploaddir . $file;

   if(move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile))
  {
   echo "Photo has been saved successfully!…;
  }
  else {
echo "Failed";
  }
?>

この点で助けてください。

ありがとう!!!

4

1 に答える 1

1

私が最初にすることは追加することだと思います

NSLog(@"%@", [request responseString]);

requestFinished:「Failed」がログに記録されていることを確認するためだけに。これは、問題がmove_upload_fileを呼び出そうとすることにあることを証明します。これは、問題が発生する場所であると私は推測します。

その場合、webserverを実行しているユーザーには、upload_filesディレクトリへの書き込み権限がないと確信しています。

于 2012-02-07T15:12:35.480 に答える