0

サムネイルのアップロードが有効かどうかを確認する方法があります。何らかの理由で、呼び出し元のプログラムでfalseが返されています。

画像ファイルは、正しいサイズ、サイズ、ファイルタイプに関して設定した要件を確実に満たし、ファイルにエラーはありません。

これはprint_r()画像ファイルのです:

imageArray ( [file] => Array ( [name] => juliensbook2slide.jpg [type] => image/jpeg [tmp_name] => C:\Users\chris\AppData\Local\Temp\php5A99.tmp [error] => 0 [size] => 20590 ) )

メソッドコードは次のとおりです。

public function checkThumb(){
        $this->temp_dir = $_FILES['file']['tmp_name'];
        $this->image_type = $_FILES['file']['type'];
        $this->image_size = $_FILES['file']['size'];
        $this->image_name = $_FILES['file']['name'];
        $this->image_error = $_FILES['file']['error'];
        @$this->image_dimensions = getimagesize($this->temp_dir);
        $this->image_width = $this->image_dimensions[0]; // Image width
        $this->image_height = $this->image_dimensions[1]; // Image height
        $this->path = '';
        $this->error = '';
        if(!empty($this->image_name) && $this->image_error == 0){

            $this->path = 'img/thumb_/'.$this->random_name. $_FILES['file']['name'];

            if(in_array($this->image_type, $this->allowed_type)){

                if($this->image_size <= $this->max_size){

                    if(($this->image_width < $this->max_width) && $this->image_height < $this->max_height){


                        return true;

                    }else{
                        return $error = 'ERROR: Image dimension must be no larger than 4050x4050';
                    }

                }else{
                    return $error = 'ERROR: Image size must be no larger than 5MB';
                }
            }else{
                return $error = 'ERROR: image must be .jpg, .gif, .png only.';
            }
        }else {
            return false;
        }
    }

falseを返しているため、アップロードされた画像を移動しないコードは次のとおりです。

if($register->checkThumb){
                //send image to permanent image directory
                $register->moveUploadedImage();

                //if the thumbnail failed validation put the error message in variable
            }else if(is_string($register->checkThumb())){
                $message = $register->checkThumb();

            }
                print_r($_FILES);
                //put record of user into database
                $register->convertSex();
                $register->insertIntoDB($thumb);
}

では、なぜそれがfalseを返すのですか?

4

1 に答える 1

2

メソッドを呼び出していませんでした。メソッド名の後に丸括弧はありませんでした。つまり、基本的には、checkThumbという名前のプロパティが設定されているかどうかを確認していました。

$register->checkThumb対のように$register->checkThumb()

これは機能するはずです:

if($register->checkThumb()){  //send image to permanent image directory
    $register->moveUploadedImage();
}  //if the thumbnail failed validation put the error message in variable
else if(is_string($register->checkThumb())) {
    $message = $register->checkThumb();
}

ただし、同じメソッドを3回呼び出さないことをお勧めします。そのため、次を使用します。

$checked_thumb = $register->checkThumb();
if($checked_thumb){  //send image to permanent image directory
    $register->moveUploadedImage();
}  //if the thumbnail failed validation put the error message in variable
else if(is_string($checked_thumb)) {
    $message = $checked_thumb;
}
于 2012-07-07T16:51:55.483 に答える