Я не получаю данные из $ _FILES ["file"] ["type"] и $ _FILES ["file"] ["size"], хотя $ _FILES ["file"] ["name"] перенастраиваетсяимя файла - PullRequest
1 голос
/ 26 ноября 2011

В глобальной переменной $_FILES, когда я использовал

  1. $_FILES["file"]["name"]: я получаю имя файла, который я загружаю.
  2. $_FILES["file"]["type"]:Здесь я получаю пустые данные.Но когда я использовал функцию ISSET для этой переменной (isset($_FILES["file"]["type"])), она возвращает 1.
  3. $_FILES["file"]["size"]: она возвращает ноль.

Я действительно не знаю, чтонастоящая причина этой проблемы?(Поскольку я наблюдаю, что эта проблема не возникает в случае создания новой записи, т. Е. Добавления новой записи в таблицу и загрузки указанного файла на сервер. Но указанная проблема возникает только при попытке отредактироватьсуществующая запись, т. е. замена старого файла новым файлом путем загрузки нового файла.)

Ответы [ 2 ]

2 голосов
/ 27 ноября 2011

Из руководства ...

If no file is selected for upload in your form, PHP will return $_FILES['userfile']['size'] as 0, and $_FILES['userfile']['tmp_name'] as none.

Кроме того, isset возвращает true, когда вы проверяете $_FILES["file"]["type"], потому что он установлен, то есть переменная существует, но ее значение пусто. Вместо isset используйте if (empty($_FILES["file"]["type"]))

Вы не должны доверять $_FILES["file"]["type"], так как он может быть подделан пользователем или просто ошибочен.

Вы получаете вышеуказанные ошибки, только если файл не был загружен? Или был загружен файл? Возможно, произошла ошибка с файлом, поэтому эти части массива не были установлены.

Опубликуйте еще немного кода и более подробное описание проблемы и того, как вы можете ее воспроизвести, и мы поможем вам больше.

0 голосов
/ 14 апреля 2017

Что-то, что сбило меня с толку на днях - убедитесь, что каталог назначения, в который записан файл tmp, доступен для php.Он должен быть в open_basedir и доступен для записи на вашем сервере (apache / nginx и т. Д.):)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...