简体   繁体   中英

php file upload script to my website?

I am trying to create a PHP file to upload images to my website. I have the following code, but it is not working. Can anyone help me fix it so I do not get any errors? Is there any better way to do such a thing? I know it is old fashioned.

    $uploaddir = "uploads/images";
    $allowed_ext = "jpg, JPG, png, gif";
    $max_size = "500000";
    $max_height = "4000";
    $max_width = "4000";

    $extension = pathinfo ($_FILES['file']['name']);
    $extension = $extension[extension];
    $allowed_paths = explode(", ", $allowed_ext);
    for ($i = 0; $i <= count($allowed_paths); $i++){
            if ($allowed_paths[$i] == "$extension"){
            $ok = "1";
        }
    }
    if ($ok == "1"){
        if($_FILES['file']['size'] > $max_size){
                print "Your file is too big!";
                exit;
            }
        }

    if($max_width && $max_height){
        list($width, $height, $type, $w) = getimagesize($_FILES['file']['name']);
        if ($width > $max_width || $height > $max_height){
                print "Your file width/height are too big!";
                exit;
            }

        }
    if (is_uploaded_file($_FILES['file']['tmp_name'])){
        move_uploaded_file($_FILES['file']['tmp_name'], $uploaddir.'/'.$_FILES['file']['name']);

        print "Your file was uploaded successfully :)";
        }
                else
                    print "Wrong extensin";



    ?>

When I run the script I get the following error:

Warning: getimagesize(1 (8).jpg) [function.getimagesize]: failed to open stream: No such file or directory in D:\Hosting\8923686\html\uploadedimages\upload.php on line 25

Warning: move_uploaded_file(uploads/images/1 (8).jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in D:\Hosting\8923686\html\uploadedimages\upload.php on line 33

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'D:\Temp\php\phpE5F5.tmp' to 'uploads/images/1 (8).jpg' in D:\Hosting\8923686\html\uploadedimages\upload.php on line 33

or

invalid file

Can any one please tell me where is my problem?

As for the first error, change getimagesize($_FILES['file']['name']) to getimagesize($_FILES['file']['tmp_name']) .

As for the other two errors, make sure your script has permissions to write files to the folder where you're trying to move the uploaded file to.

Edit: Also try to use a full absolute path in $uploaddir instead of just uploads/images . Since you're using a relative path from a script that isn't located in the document root, it's possible that PHP is looking in the wrong directory.

getimagesize($_FILES['file']['name'] in line 25 is the first culprit: you meant getimagesize($_FILES['file']['tmp_name']

For the othe errors you need to check permissions of uploads/images - they are obviously off limits for the webserver user.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM