неясно относительно загрузки CSV-файла в php - PullRequest
0 голосов
/ 03 мая 2011

Итак, я хочу:

  • загрузить файл CSV, который будет содержать список номеров студентов, по одному на каждую строку (392232, на строку).

  • заполнить массив номерами студентов (поскольку у меня уже есть процесс поиска идентификаторов из массива номеров студентов, сохранения и т. Д., Если они будут добавлять студентов вручную)

Я смотрел на учебник, найденный здесь .

однако я немного запутался с этим:

if(isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file']['tmp_name'])){...

где он устанавливает 'tmp_name' от?

в любом случае, если кто-то может объяснить, как я должен поступить об этом, я был бы признателен за помощь.

большое спасибо,

РЕДАКТИРОВАТЬ: добавлен прогресс, когда он не работает.

if(isset($_POST['csv_submit'])){
    if(isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file']['tmp_name'])){



        //upload directory
        $upload_dir = "/ece70141/csv_files/";
        //create file name
        $file_path = $upload_dir . $_FILES['csv_file']['name'];

        //move uploaded file to upload dir
            // GETTING THE ERROR BELOW.
        if (!move_uploaded_file($_FILES['csv_file']['tmp_name'], $file_path)) {
            //error moving upload file
            echo "Error moving file upload";
        }

        print_r($_FILES['csv_file']);

        //delete csv file
        unlink($file_path);
    }
}

1 Ответ

5 голосов
/ 03 мая 2011

$_FILES - магический суперглобаль, похожий на $_POST. Это массив каждого файла, который был загружен в последнем запросе, и где этот файл хранится (tmp_name).

tmp_name в основном генерируется веб-сервером, чтобы сообщить PHP, где они сохранили файл.

В каждом элементе массива $_FILES доступны следующие элементы:

  1. имя (оригинальное имя файла)
  2. type (MIME-тип файла, т. Е. Text / plain)
  3. tmp_name (Путь к временному расположению загруженных файлов)
  4. ошибка (ошибка при загрузке, 0 при отсутствии ошибки)
  5. размер (размер загружаемого файла в байтах)

Из того, что я вижу в вашем коде, это будет прекрасно работать, и, как обсуждалось в комментариях, я думаю, что проблема заключается в вашем HTML.

Учебник, на который вы ссылались, содержит неверное определение тега <form ..>. Для загрузки файлов вам необходимо установить атрибут enctype, ниже он должен выглядеть следующим образом:

<form action="" method="post" enctype="multipart/form-data">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...