2016-10-17 3 views
1

Такое же приложение работает на двух разных серверах (dev/prod). Насколько мне известно, на серверах работает одна и та же версия (CF, Java, IIS и т. Д.).Тот же сервер, тот же файл, разные типы mime

При разработке Я загружаю определенный документ Word, а ColdFusion идентифицирует его как application/msword, а по prod идентифицируется как application/x-tika-msoffice.

Я пытаюсь диагностировать причину. Мое исправление заключается в том, чтобы разрешить тип mime application/x-tika-msoffice в моих загрузках, но все же, что может привести к тому, что он будет другим. Если у вас есть определенные настройки сервера, я должен проверить, пожалуйста, дайте мне знать, но все, что я могу думать, похоже на то, что между prod и dev.

+1

Имеет ли тип MIME для .doc в IIS в dev и prod? –

+0

Да, это так. Они оба говорят, что приложение/msword – Leeish

+0

Есть несколько похожих записей в багете Adobe, начиная с 2014. Это файл .doc или .docx? Он когда-либо касался OpenOffice? – TRose

ответ

2

Тип MIME: выслано отправлено браузером, так что это, вероятно, объясняет разницу, которую вы видите. Возможно, на этапе разработки у вас установлен Office, а на производственном сервере, надеюсь, нет.

Вы не должны использовать тип MIME, чтобы определить, должен ли файл загружаться по этой причине - вместо этого всегда использует расширение файла. Этот тип mime может легко быть поддельным и поэтому бессмысленно полагаться на подтверждение.

CF10 + позволяет указать список расширений файлов в атрибуте accept тега cffile. Он также добавляет атрибут strict и по умолчанию оно к true который делает проверку MIME тип на стороне сервера (по существу такой же, как работает fileGetMimeType(), но даже с strict=true вы до сих пор не может полагаться на этот файл инспекции, расширения являются более важными (и то и другое).

+0

Я не понимаю вашу первую часть. Я использую одну и ту же машину для загрузки файла (тот же браузер), и ColdFusion получает серверную часть типа MIME от чтения временного файла. Поэтому, если тип MIME не будет изменен в браузере, а затем добавлен как метаданные в файл temp на сервере, я не знаю, как это возможно. Вы говорите, что файл имеет тип mime по сути, но браузер берет файл и перезаписывает его при отправке на сервер? Это звучит безумно. И как расширение файла менее подменяет тип MIME. Я использую атрибут 'accept' для этой проверки. – Leeish

+0

Чтение документов FileUpload, похоже, ваше утверждение верно, что оставляет меня более смущенным. Тот же компьютер, тот же файл, и мой браузер отправляет два разных типа mime? – Leeish

+0

Предполагая, что файл doc уже на сервере, какие результаты вы получаете из 'fileGetMimeType (путь, ложь)' и 'fileGetMimeType (путь, истина)'? – Leigh