Php upload image to directory

后端 未结 6 386
野的像风
野的像风 2021-01-13 16:25

Ive been experimenting with the upload capability of php, I have been looking at this tutorial on w3school.

http://www.w3schools.com/php/php_file_upload.asp
         


        
相关标签:
6条回答
  • 2021-01-13 17:01

    I would say the problem is in that If, a lot of conditions there (also "invalid file" is the Else part of that if), try to simplify it to track the problem, at first glance I would say it's because of the size checking:

    && ($_FILES["file"]["size"] < 20000)
    

    that's around 20Kb, quite small for an image if you are uploading a photo, try to put a higher value or to take out that condition and see if the script works

    0 讨论(0)
  • 2021-01-13 17:10

    Your validation code is checking the extension, mime type and file size.

    You are probably uploading a file with uppercase characters in the extension. When you check the extension, you checking it case sensitive, .JPG is a valid image file extension, so you should make your check case insensitive:

    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/png")
    || ($_FILES["file"]["type"] == "image/pjpeg"))
    && ($_FILES["file"]["size"] < 20000)
    && in_array(strtolower($extension), $allowedExts))
             // ^ added strtolower()
    

    If that isn't the immediate problem then the file is too big or has the wrong mime type. To debug, view the files array with:

    print_r($_FILES);
    
    0 讨论(0)
  • 2021-01-13 17:12

    This happens because the following expression evaluates to false:

    (($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/png")
    || ($_FILES["file"]["type"] == "image/pjpeg"))
    && ($_FILES["file"]["size"] < 20000)
    && in_array($extension, $allowedExts)
    

    Which means that either

    • The file type is incorrect (it is not a GIF/JPEG/PNG/PNJPEG file)
    • The file is bigger than 20000 bytes
    • The file extension is incorrect (it is not any of "jpg", "jpeg", "gif", "png")

    My guess would be the file size - increase it drastically. Change it to the following to allow sizes up to 10 MB:

    && ($_FILES["file"]["size"] < 10485760)
    

    The best way to see the problem is to add this line to the beginning of your script:

    var_dump($_FILES);
    
    0 讨论(0)
  • 2021-01-13 17:15

    The problem of your script is that you are probably trying to upload a file higher that your limit is! You specified a really low max filesize! Print out your $_FILES var to get information about what's wrong ;)

    However, in order to move the file to your folder you still need to use move_uploaded_file:

    $allow = array("jpg", "jpeg", "gif", "png");
    
    $todir = 'uploads/';
    
    if ( !!$_FILES['file']['tmp_name'] ) // is the file uploaded yet?
    {
        $info = explode('.', strtolower( $_FILES['file']['name']) ); // whats the extension of the file
    
        if ( in_array( end($info), $allow) ) // is this file allowed
        {
            if ( move_uploaded_file( $_FILES['file']['tmp_name'], $todir . basename($_FILES['file']['name'] ) ) )
            {
                // the file has been moved correctly
            }
        }
        else
        {
            // error this file ext is not allowed
        }
    }
    
    0 讨论(0)
  • 2021-01-13 17:25

    best way to upload images i think would be to copy an image and store inside a folder and then store the new location of image into a databse.

    to move the file we can use move_uploaded_file function

    $oldpath = $_FILES['image']['tmp_name'];
    $newpath ="new_folder_location/".$_FILES['image']['name'];
    move_uploaded_file($oldpath, $newpath);
    
    0 讨论(0)
  • 2021-01-13 17:26

    I agree with answer of Ivo but I think that you may make change of next piece of code like this:

    $typePicture = array('jpg','png','jpeg','gif');
    
    // Allow certain file formats
    
    if($typePicture[0] != "jpg" || $typePicture[1] != "png" || $typePicture[2] != "jpeg" || $typePicture[3] != "gif" ) 
    {
        echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
        $uploadOk = 0;
    }
    
    0 讨论(0)
提交回复
热议问题