@koliq

Как загрузить файл через форму?

На сайте есть форма, выглядящая следующим образом:
<form action="add-link.php" method="post" id="link-form">
  <label for="link-input">Добавить ссылку в БД</label>
  <input type="input" placeholder="Вставьте ссылку" name="link-input" id='link-input'/>
  <input type="submit" id="link-submit" value="+"/>
  <br>
  <input type="file" id="file-input" name="file-input" accept=".txt">
</form>

PHP файл, обрабатывающий форму:
<?php
if (isset($_POST)) {
  if (isset($_POST['link-input'])) {
    Код
  }
  if (isset($_POST['file-input'])) {
    Код
  }
}
header('Location: /');
exit;
?>

Часть кода, обрабатывающая текстовый инпут, полностью исправно работает, но при попытке загрузить файл массив $_FILES оказывался полностью пустым. После этого мне подсказали добавить в форму атрибут enctype="multipart/form-data". После добавления текстовый инпут все так же исправно обрабатывается, но ситуация с загрузкой файла стала еще хуже: кроме массива $_FILES пустым стал и $_POST['file-input']. Что можно с этим сделать?
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 2
@SergeTkach
OpenCart Forever
$_POST['file-input'] вроде и не должен что-то содержать. Уже и не помню. Но работать надо с $_FILES - это точно.

И ещё попробуйте кнопку submit поставить в конец формы. И на всякий случай, чтобы посмотреть, что происходит, сделайте var_dump $GLOBALS и на время закомментрируйте редирект. Хотя, по идее он и так не отработает при наличии вывода до него

И, кстати, проверять запрос лучше вот так:

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
     // The request is using the POST method
}


Там ещё вот эта штука не помешает

<!-- Поле MAX_FILE_SIZE должно быть указано до поля загрузки файла -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />


Хотя, это ж ещё надо проверить в phpinfo() какое там текущее значение со стороны сервера допускается
Ответ написан
Комментировать
zkrvndm
@zkrvndm
Архитектор решений
Если форма правильная, а $_FILES все равно пуст, то вероятно отправка формы у вас осуществляется при помощи JavaScript, если это так, то покажите нам для начала код, отвечающий за отправку формы, вероятно проблема там.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы