почему при извлечении данных файла с помощью JInputFiles иногда получается пустой массив?
Я занимаюсь разработкой задачи, которая состоит из загрузки файлов, в этом контексте я определил, что в некоторых случаях вызов на $files = $application->input-> files->get('files', [], 'ARRAY');
возвращает пустой массив, а $_FILES
суперглобальная содержит файл информации.
Я показываю содержимое переменных в формате JSON
$_АРХИВ
{
"files": {
"name": ["test.zip"],
"type": ["application/zip"],
"tmp_name": ["/tmp/phpwiA9ch"],
"error": [0],
"size": [2993308]
}
}
$архив
[]
Я не смог определить причину, я изначально определил ее при попытке загрузить файл pdf размером 32 МБ, я думал, что это проблема с размером файла, но затем я определил, что это происходит с файлом zip размером 3 МБ, я упоминаю здесь, что мне удалось загрузить другие zip-файлы
Я разделяю Настройки Мультимедиа
Юридическое расширения (типы файлов): зип БМП, КШМ, DOC, в формате GIF, формат ICO, jpg, формате JPEG, ОДГ, тонны ОРВ, odt, в формате PDF в сети, ПНГ, формате ppt, TXT и файл xcf, XLS, а также ЗИП БМП, КШМ, DOC , в формате GIF, формат ICO, jpg, формате JPEG, ОДГ, тонны ОРВ, файлы odt, PDF и PNG, в формате ppt, TXT и файл xcf, XLS и
Максимальный размер (в МБ): 100 МБ
Юридическое типы MIME-тип: изображение / JPEG изображение / GIF, изображение / PNG, изображения / БМП, приложение / MSWord, применение / Excel, приложения / PDF, приложение / PowerPoint, текст / равнина, применение / х-молнии
Решение, которое я думаю, было бы сделать вызов $_FILES
, если содержимое $files
пусто. Но мне интересно узнать причину этой ошибки
Вот код, который я пытаюсь выполнить
public function uploadAttachments()
{
$application = JFactory::getApplication();
$files = $application->input->files->get('files', [], 'ARRAY'); // Here some times is empty
$helper = new Helper();
$response = $helper->uploadAttachments($files);
header('content-type: application/json; charset=utf-8');
echo json_encode($response);
$application->close();
}
Ответы - почему при извлечении данных файла с помощью JInputFiles иногда получается пустой массив? / why when retrieving file data using JInputFiles sometimes get an empty array?

26.08.2019 06:44:04
Основанием для получения пустой массив при вызове $application->input->files-> get('files', [], 'ARRAY');
- то, что get
метод JInputFiles
класс это проверить, если файл является безопасным, проверка осуществляется в статическом методе isSafeFile
, после серии проверок, если какое-то условие не проходит, то ложным будет вернуться, в consecuense метод get
возвращает значение по умолчанию в моем случае пустой массив.
В случае файла, в котором я тестировал, это связано с тем, что он идентифицирует расширение pl
, которое отмечено как: "это подозрительные текстовые файлы, которые могут иметь исполняемый файл"
JInputFile класс