PHP не может загрузить файл из формы HTML - PullRequest
2 голосов
/ 08 августа 2011

Вот как я обращаюсь с формой:

        # Create the message
        # ----------------------------------------------------------------
        $name = $_POST['name'];
        $email = $_POST['email'];
        $title = $_POST['title'];
        $course = $_POST['course'];
        $file = $_POST['file'];

        $message  = "Name: ".$name."\n";
        $message .= "Email: ".$email."\n\n";
        $message .= "Title of Article: ".$title."\n";
        $message .= "Program: ".$course."\n\n";
        $message .= "Additional Info: ".$info;

        # Upload temporary files
        # ----------------------------------------------------------------
        $uploaddir = '/home/public/uploads/';
        $uploadfile = $uploaddir . basename($_FILES['file']['name']);
        if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile) == false) {
            echo 'Could not move file';
            exit;
        }

        if ($_FILES['file']['type'] != "application/pdf") {
            echo 'Not a pdf file';
            unlink($uploadfile);
            exit;
        }

Конечный продукт, мы надеемся, отправит электронное письмо с файлом в качестве вложения. Прямо сейчас я терплю неудачу и получаю сообщение «Не удалось переместить файл», которое я встроил. Есть ли очевидная причина, почему? $file - это то, что я получаю из файлового диалога в HTML (input type="file")

Ответы [ 2 ]

3 голосов
/ 08 августа 2011

Две вещи:
1. Форма установлена ​​на:

<form method="POST" enctype="multipart/form-data" action="INSERT ACTION">

2. Папка, в которую вы отправляете файл, установлена ​​на 777?

2 голосов
/ 08 августа 2011

В вашей форме должен быть установлен соответствующий атрибут enctype, т.е.

<form enctype="multipart/form-data" method="post" action=... >

Обновление

Несколько предложений ...

  1. Проверкатип файла и выполните любую другую общую проверку перед тем, как переместить загруженный файл.Это должен быть ваш последний шаг.
  2. Не могу вспомнить точно сейчас, но я не думаю, что вы получите что-то полезное (или вообще) в значении $_POST['file'].Используйте массив $_FILES для всех загруженных данных файла.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...