cyber_alchemist
cyber_alchemist

Reputation: 37

I was writing a small code for checking the images the that has been uploaded , but it always returns 'invalid file type'?

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' ] );
}

Upvotes: 0

Views: 87

Answers (1)

M I
M I

Reputation: 3682

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' );

}

Upvotes: 1

Related Questions