Я хотел бы убедиться, что файл, загруженный в мое приложение OpenShift, имеет расширение текста (.txt или .tab). Следуя некоторым советам дано здесь Я написал следующий код с добавлением эха, чтобы помочь отладке:
$AllowedExts = array('txt','tab');
echo "AllowedExts: " . $AllowedExts[0] . " and " . $AllowedExts[1] . "<br>";
$ThisPath = $_FILES['uploadedfile']['tmp_name'];
echo "ThisPath: " . $ThisPath . "<br>";
$ThisExt = pathinfo($ThisPath, PATHINFO_EXTENSION);
echo "ThisExt: " . $ThisExt . "<br>";
if(!in_array($ThisExt,$AllowedExts) ) {
$error = 'Uploaded file must end in .txt or .tab';
}
echo "error echo: " . $error . "<br>";
При загрузке любого файла, ответ был:
AllowedExts: txt и tab
ThisPath: / var / lib / openshift / ************ / php / tmp /phpSmk2Ew
ThisExt:
ошибка эхо: загруженный файл должен заканчиваться на .txt или .tab
Означает ли это, что OpenShift переименовывает файл при загрузке? Как получить исходное имя файла и затем проверить его суффикс? В целом, есть ли лучший способ проверить тип файла?
$_FILES['uploadedfile']['tmp_name']
содержит имя временного файла на сервере (который может быть перемещен с помощью move_uploaded_file()
). Если вы хотите проверить оригинальное имя загруженного файла на клиентском компьютере, используйте $_FILES['uploadedfile']['name']
,
Это не проблема Open Shift, это стандартный способ PHP.
Для получения дополнительной информации см. http://php.net/manual/en/features.file-upload.post-method.php
Другие способы определения типа файла см. http://php.net/manual/en/ref.fileinfo.php
Других решений пока нет …