Обнаружение файла MIME-типа в Coldfusion, который уже загружен на сервер - PullRequest
7 голосов
/ 20 сентября 2010

Я пытаюсь определить тип файла библиотеки файлов на нашем веб-сервере, поскольку мы реализуем код, предназначенный для безопасной передачи файлов в браузер.Ранее файлы хранились и передавались пользователям через прямую ссылку.

Я пытался сделать это 3 разными способами, все на моем локальном компьютере (который НЕ является имитируемой производственной средой):

  1. Установка переменной равной значению того, что возвращается функцией getPageContext (). GetServletContext (). GetMimeType ().Это обнаруживает некоторые, но не все типы MIME для файлов.

  2. Создание объекта из coldfusion.util.MimeTypeUtils и вызов функции guessMimeType ().Это также обнаруживает некоторые, но не все типы MIME для файлов.

  3. Действие cffile = "чтение" для файлов в библиотеке.Это решение рекомендовано моим боссом, так как он использовал это для файлов с действием cffile = "upload" из формы (и говорит, что оно работает), но когда я его использую, структура cffile всегда пуста.

В идеале я хочу получить тип mime для каждого файла, расположенного на сервере, со 100% точностью.Код, который я написал, обнаружил примерно 99% файлов в моей копии репозитория, оставив около 30, которые он не может идентифицировать.В их состав входят файлы MS Office с новым расширением -x и сжатые файлы tgz.

Мне интересно, существует ли надежный способ обнаружения типов mime любого данного файла, который существует насервер с помощью кода CF, чтобы посмотреть на него, и будет ли используемый код работать на рабочем сервере, где установлено очень мало приложений?Насколько я понимаю, первая функция, на которую я ссылался, использует библиотеку MIME-типов ОС, а вторая использует предварительно определенный список в Java-объекте для MIME-типов.Поиск в Google и SO не дал ничего, что говорило бы мне о том, что CF может точно определять типы файловых пантомимов самостоятельно, и я не видел ничего, что говорит, что это невозможно сделать.

Редактировать: Это наОкружающая среда CF8.

1 Ответ

2 голосов
/ 20 сентября 2010

Не будет 100% гарантированного безошибочного пути, потому что типы пантомимы являются произвольными отображениями.

Вам нужно будет использовать чьи-либо сопоставления, будь то ОС или JVM.

Вы несете ответственность за заполнение любых пробелов, которые ОС или JVM имеют в сопоставлениях, и обновляете их.

Но я всегда смогу создать какой-нибудь файл, дать ему расширение .xyzzy, и вы не сможете узнать его 'mime-тип'.

...