PHP скрипт загрузки файла на мой сайт? - PullRequest
1 голос
/ 31 марта 2012

Я пытаюсь создать файл PHP для загрузки изображений на мой сайт.У меня есть следующий код, но он не работает.Может кто-нибудь помочь мне исправить это, чтобы я не получил никаких ошибок?Есть ли лучший способ сделать такую ​​вещь?Я знаю, что это старомодно.

    $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";



    ?>

Когда я запускаю скрипт, я получаю следующую ошибку:

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

или

invalid file

Может кто-нибудь, пожалуйстаскажите, где моя проблема?

Ответы [ 2 ]

2 голосов
/ 31 марта 2012

Что касается первой ошибки, измените getimagesize($_FILES['file']['name']) на getimagesize($_FILES['file']['tmp_name']).

Что касается двух других ошибок, убедитесь, что у вашего скрипта есть права на запись файлов в папку, в которую вы пытаетесь переместить загруженный файл.

Редактировать: Также попробуйте использовать полный абсолютный путь в $uploaddir вместо просто uploads/images. Поскольку вы используете относительный путь из сценария, который не находится в корне документа, возможно, PHP ищет не в том каталоге.

1 голос
/ 01 апреля 2012

getimagesize($_FILES['file']['name'] в строке 25 - первый виновник: вы имели в виду getimagesize($_FILES['file']['tmp_name']

Для других ошибок необходимо проверить разрешения uploads/images - они явно недоступны для пользователя веб-сервера.

...