Баг с определением mime type при загрузке файлов?

Added by Александр Махомет over 1 year ago

Приветствую!

Возникла проблема при загрузке файлов и настройке ограничений на типы загружаемых файлов.

Есть текущая версия ElFinder 1.1 (2010-03-22)
Есть локальный компьютер, Windows, PHP 5.2.12
НЕ установлены расширения Mimetype и Fileinfo (Приложение предполагается для распространения, не известно будет ли поддержка этих расширений)

Настройки коннектора

1     'uploadAllow'  => array('image'),
2     'uploadDeny'   => array('all'),
3     'uploadOrder'  => 'deny,allow',
4     'mimeDetect'   => 'auto'

Хочу загружать только изображения.

Так как выше указанных PHP расширений нет, и OS Windows
функция _getMimeDetect возвращает internal, то есть будет определение по расширению файла.

Но в функции _isUploadAllow есть такие строчки

1     $mime  = $this->_mimetype($this->_options['mimeDetect'] != 'internal' ? $tmpName : $name);

Если $this->_options['mimeDetect'] равен internal то все ок, так как в функцию $this->_mimetype() передается реальное имя файла, с корректным расширением.
Если же стоит auto как у меня, то в функцию $this->_mimetype() передается временный путь с расширением .tmp а далее метод определяется как internal, а расширение tmp не зарегистрировано, в общем получаем что никакие файлы загрузить не возможно.

Это ожидаемое поведение?


Replies (3)

RE: Баг с определением mime type при загрузке файлов? - Added by Troex Nevelin over 1 year ago

Хитрый баг вы нашли, это конечно нужно исправить, но пока не ясно как. Вам пока рекомендую установить всё же mimeDetect = internal. Проблема что у нас нет метода чтобы выичслить какой метод используется для получения mimetype... а скорее всего есть смысл вычислять метод получения mimetype ещё в конструкторе, чтобы повторно не делать его в вызов в _mimetype. Надо заявку накидать на этот счёт...

RE: Баг с определением mime type при загрузке файлов? - Added by Troex Nevelin about 1 year ago

поковырялся в этой проблеме - ошики здесь нет

Обратите внимание:

$this->_options['mimeDetect'] != 'internal' ? $tmpName : $name

если mimeDetect не равен internal тогда использует tmpName, иначе name

Тестил на линуксе:

tmpName:  /tmp/phpvTrNJH
name:     redken in bristol.doc

Всё работе как нужно, скорее всего проблема в другом

RE: Баг с определением mime type при загрузке файлов? - Added by Den - about 1 year ago

Заработало как по маслу, когда выставил в режим

'mimeDetect'   => 'internal'

(1-3/3)