move_uploaded_file не будет работать на моей локальной машине

0

Я новичок в области PHP. Это моя попытка загрузить файл:

<?php  
    if(isset($_FILES['file'])) {

        $file = $_FILES['file'];
        if($file['error'] === 0) {
            $distination = 'uploads/';
            $file_ext = pathinfo($file['name'], PATHINFO_EXTENSION);
            $filename = $distination . uniqid('', true) . '.' . $file_ext;
            if(!move_uploaded_file($file['name'], $filename)) {
                echo "File upload failed!";
            }
        }
    }
?>
<form action="testupload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload">
</form>

возвращаемое значение из файла move_uploaded_file всегда false. Я создаю папку uploads в том же каталоге, что и файл сценария загрузки.

  • 0
    uploads/ вероятно, недоступна для записи пользователю веб-сервера. Всегда разрабатывайте код с error_reporting(E_ALL); ini_set('display_errors', 1); сообщением об ошибках и отображением: error_reporting(E_ALL); ini_set('display_errors', 1); и вы увидите причины неудачи.
  • 1
    Попробуйте добавить $ distination = $ _SERVER ['DOCUMENT_ROOT']. '/ Uploads /';
Показать ещё 5 комментариев
Теги:

1 ответ

0

Основная проблема заключается в том, что вы используете name вместо значения tmp_name из массива $_FILES.

name - оригинальное имя загруженного файла, tmp_name - местоположение файла после загрузки. Ручная страница

Исправлена версия ниже. Я также добавил чек для каталога назначения и автоматического его создания, если он недоступен.

<?php  
    if(isset($_FILES['file'])) {

        $file = $_FILES['file'];
        if($file['error'] === 0) {
            $distination = 'uploads/';
            if(!file_exists($distination)){
                mkdir($distination, 0777, true);
            }
            $file_ext = pathinfo($file['name'], PATHINFO_EXTENSION);
            $filename = $distination . uniqid('', true) . '.' . $file_ext;
            print_r($file);
            if(!move_uploaded_file($file['tmp_name'], $filename)) {
                echo "File upload failed!";
            }
        }
    }
?>
<form action="testupload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload">
</form>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню