Загрузка файла: проверить «tmp_name» или «error», или другой ключ? - PullRequest
0 голосов
/ 26 августа 2018

Краткая версия:

Когда пользователь загружает файл с помощью формы, массив сохраняется в глобальной переменной $_FILES. Например, при использовании:

<input type="file" name="myfiles0" />

глобальная переменная выглядит так:

$_FILES = [
    'myfiles0' => [
        'name' => 'image-1.jpg',
        'type' => 'image/jpeg',
        'tmp_name' => '[path-to]/tmp/php/phptiV897',
        'error' => 0,
        'size' => 92738,
    ],
]

В принципе, мне нужно знать, какой из ключей массива $_FILES['myfiles0'] всегда существует и (возможно) всегда установлен, независимо от того, как выглядят другие ключи или какой браузер используется. Не могли бы вы сказать мне, пожалуйста?

Пожалуйста, примите во внимание, что переменная $_FILES может также содержать многомерные массивы для файлов, загружаемых с использованием записи массива, например:

<input type="file" name="myfiles1[demo][images][]" multiple />
<Ч />

Длинная версия:

Для моей реализации PSR-7 Загруженные файлы Мне нужно выполнить нормализацию списка загруженных файлов. Начальный список может быть предоставлен пользователем или может быть результатом стандартной загрузки файла с использованием формы, например, $_FILES глобальная переменная. Для процесса нормализации мне нужно проверить наличие и «правильность» (возможно, неудачный выбор слова) одного из следующих стандартных ключей загрузки файлов:

  • name
  • type
  • tmp_name
  • error
  • size

В принципе, если в предоставленном списке загруженных файлов (который также может быть многомерным массивом) найден выбранный ключ (на данный момент я выбрал tmp_name), то предполагается, что массив Элемент, к которому принадлежит ключ, является стандартным элементом массива загрузки файлов, содержащим приведенный выше список ключей. В противном случае, например если выбранный ключ не найден, предполагается, что соответствующий элемент массива является экземпляром UploadedFileInterface .

К сожалению, в случае стандартной загрузки файла я нигде не могу найти информацию о том, какой ключ (из приведенного выше списка) всегда существует и (возможно) всегда установлен в переменной $_FILES, независимо от того, как остальные ключи списка выглядят, или какой браузер используется.

Буду признателен, если вы поможете мне в этом.

Спасибо.

...