我正在编写一个用于检查已上传图像的小代码,但它总是返回“无效文件类型”?

The code checks whether the uploading was okay or not and that the file format which has been uploaded is of correct format, but i am always getting a die response of 'The 1st image you have uploaded was not of supported filetype.' from the script. I don't why is it so.

if ( isset( $_POST[ 'submit' ] ) ) {
                    $dir_1   = './images/';
                    $thumb_1 = '.images/thumb';
                    //making sure the uploaded file transfer was successful
                    if ( $_FILES[ 'pic1' ][ 'error' ] != UPLOAD_ERR_OK ) {
                            switch ( $_FILES[ 'pic1' ][ 'error' ] ) {
                                    case UPLOAD_ERR_INI_SIZE:
                                            die( 'The uploaded 1st image exceeds the upload_max_filesize directive ' . 'in php.ini.' );
                                            break;
                                    case UPLOAD_ERR_FORM_SIZE:
                                            die( 'The uploaded 1st exceeds the MAX_FILE_SIZE directive that ' . 'was specified in the HTML form.' );
                                            break;
                                    case UPLOAD_ERR_PARTIAL:
                                            die( 'The uploaded 1st image was only partially uploaded.' );
                                            break;
                                    case UPLOAD_ERR_NO_FILE:
                                            die( 'No 1st image was uploaded.' );
                                            break;
                                    case UPLOAD_ERR_NO_TMP_DIR:
                                            die( 'The server is missing a temporary folder.' );
                                            break;
                                    case UPLOAD_ERR_CANT_WRITE:
                                            die( 'The server failed to write the uploaded the uploaded 1st image to disk.' );
                                            break;
                                    case UPLOAD_ERR_EXTENSION:
                                            die( '1st image upload stopped by extension.' );
                                            break;
                            } //$_FILES[ 'pic1' ][ 'error' ]
                    } //$_FILES[ 'pic1' ][ 'error' ] != UPLOAD_ERR_OK
                    // making sure the file is being uploaded

                    $error = 'The 1st image you have uploaded was not of supported filetype.';
                    switch ( $type ) {
                            case IMAGETYPE_GIF:
                                    $image_1 = imagecreatefromgif( $_FILES[ 'pic1' ][ 'tmp_name' ] ) or die( $error );
                                    break;
                            case IMAGETYPE_JPEG:
                                    $image_1 = imagecreatefromjpeg( $_FILES[ 'pic1' ][ 'tmp_name' ] ) or die( $error );
                                    break;
                            case IMAGETYPE_PNG:
                                    $image_1 = imagecreatefrompng( $_FILES[ 'pic1' ][ 'tmp_name' ] ) or die( $error );
                                    break;
                            default:
                                    die( $error );                                        
                    } //$type
                      $image_date_1 = @date( 'Y-m-d' );
                     list( $width, $height, $type, $attr ) = getimagesize( $_FILES[ 'pic1' ][ 'tmp_name' ] );
}

You are using $type for switch statement. But getting $type value in this line that is calling getimagesize function after switch.

list( $width, $height, $type, $attr ) = getimagesize( $_FILES[ 'pic1' ][ 'tmp_name' ] );

If you move this line up before switch statement. It should solve the issue.

if ( isset( $_POST[ 'submit' ] ) ) {
                $dir_1   = './images/';
                $thumb_1 = '.images/thumb';
                //making sure the uploaded file transfer was successful
                if ( $_FILES[ 'pic1' ][ 'error' ] != UPLOAD_ERR_OK ) {

                        switch ( $_FILES[ 'pic1' ][ 'error' ] ) {
                                case UPLOAD_ERR_INI_SIZE:
                                        die( 'The uploaded 1st image exceeds the upload_max_filesize directive ' . 'in php.ini.' );
                                        break;
                                case UPLOAD_ERR_FORM_SIZE:
                                        die( 'The uploaded 1st exceeds the MAX_FILE_SIZE directive that ' . 'was specified in the HTML form.' );
                                        break;
                                case UPLOAD_ERR_PARTIAL:
                                        die( 'The uploaded 1st image was only partially uploaded.' );
                                        break;
                                case UPLOAD_ERR_NO_FILE:
                                        die( 'No 1st image was uploaded.' );
                                        break;
                                case UPLOAD_ERR_NO_TMP_DIR:
                                        die( 'The server is missing a temporary folder.' );
                                        break;
                                case UPLOAD_ERR_CANT_WRITE:
                                        die( 'The server failed to write the uploaded the uploaded 1st image to disk.' );
                                        break;
                                case UPLOAD_ERR_EXTENSION:
                                        die( '1st image upload stopped by extension.' );
                                        break;
                        } //$_FILES[ 'pic1' ][ 'error' ]
                } //$_FILES[ 'pic1' ][ 'error' ] != UPLOAD_ERR_OK
                // making sure the file is being uploaded

                $error = 'The 1st image you have uploaded was not of supported filetype.';
                  list( $width, $height, $type, $attr ) = getimagesize( $_FILES[ 'pic1' ][ 'tmp_name' ] );
                switch ( $type ) {
                        case IMAGETYPE_GIF:
                                $image_1 = imagecreatefromgif( $_FILES[ 'pic1' ][ 'tmp_name' ] ) or die( $error );
                                break;
                        case IMAGETYPE_JPEG:
                                $image_1 = imagecreatefromjpeg( $_FILES[ 'pic1' ][ 'tmp_name' ] ) or die( $error );
                                break;
                        case IMAGETYPE_PNG:
                                $image_1 = imagecreatefrompng( $_FILES[ 'pic1' ][ 'tmp_name' ] ) or die( $error );
                                break;
                        default:
                                die( $error );                                        
                } //$type
                  $image_date_1 = @date( 'Y-m-d' );

}