0

ここで ASIFormDataRequest を使用した単純な画像のアップロードを検索した後、最終的に機能するようになりましたが、予期しないエラーが発生しました。

画像がサーバーにアップロードされましたが、空白で、サイズが 0 バイトです。これが私のコードです:

 -(IBAction)uploadImage:(id)sender
{
    NSData *data = UIImageJPEGRepresentation(self.imageView.image,0.6f);
    NSString *file = [NSTemporaryDirectory() stringByAppendingPathComponent:@"upload.png"];
    [data writeToFile:file atomically:YES];

    NSString *strURL = @"http://domain.com/upload.php";

    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:strURL]];
    UIImage *image1=[UIImage imageNamed:file];
    NSData *imageData1=UIImageJPEGRepresentation(image1, 1.0);
    [request setData:imageData1 withFileName:file andContentType:@"image/jpeg" forKey:@"avatar"];
    [request setRequestMethod:@"POST"];
    //[request appendPostData:body];
    [request setDelegate:self];
    [request setTimeOutSeconds:13.0];
    request.shouldAttemptPersistentConnection = NO;
    [request setDidFinishSelector:@selector(uploadRequestFinished:)];
    [request setDidFailSelector:@selector(uploadRequestFailed:)];
    [request startAsynchronous];
}
- (void)uploadRequestFinished:(ASIHTTPRequest *)request
{
    NSLog(@" Error - Statistics file upload ok: \"%@\"",[request responseString]);
}

- (void)uploadRequestFailed:(ASIHTTPRequest *)request{
    NSLog(@" Error - Statistics file upload failed: \"%@\"",[[request error] localizedDescription]);

}

私のPHPコード:

<?php 

 $target = "./"; 
 $target = $target . basename( $_FILES['avatar']['name']) ; 
 $ok=1; 
 if(move_uploaded_file($_FILES['avatar']['tmp_name'], $target)) 
 {
 echo "The file ok";
 } 
 else {
 echo "Sorry, there was a problem uploading your file.";
 }

?>

最初はフォルダの許可の問題だと思っていましたが、単純なhtmlフォームのアップロード(同じphpファイルを編集せずに)でテストしたところ、ファイルはフルサイズでアップロードされました。

このようなファイルのアップロード方法が危険であることは承知していますが、今のところそれしかありません。

私のファイルがアップロードされない理由はありますか? ありがとう。

4

1 に答える 1