Определение MIME-типа файла потока загрузки MAC - PullRequest
1 голос
/ 05 января 2012

У меня есть простая веб-форма, которая отправляет и отправляет электронную почту через .NET C #.Кроме того, существует ASP UPLOAD ctrl, из которого я создаю поток памяти и присоединяю поток к почтовому сообщению ... т.е. нет необходимости сохранять файл в файловую систему.

ПРОБЛЕМА: Когда пользователи MAC не вводят расширения в свои загруженные файлы (я проверяю для файла PostedFile.ContentType, чтобы определить файл и / или соответствующее расширение, допустимые файлы RTF, TXT, PDF, DOC, DOCX), кажется,как ContentType возвращается как «application / octet» ... это имеет некоторый смысл для меня без расширения, как того требуют ПК, но;До сих пор неясно, будет ли чтение содержимого ContentType или расширения лучше определить, к какому типу файлов это относится, прежде чем прикреплять.[Расширительный MAC-файл, очевидно, не сможет выполнить любой тест на расширение]

По сути, я читаю файл с помощью ctrl при загрузке, определяю его ContentType, удаляю только файл PostedFile.Filename, а затем снова собираю, когда создаю вложение, используяСтрока ContentType в операторе switch для определения и добавления правильного расширения во вложенный файл (имя файла + ext).Я сделал это для того, чтобы пользователи MAC, которые не используют расширения, могли по-прежнему загружать без создания .ZIP или другого пакета.

Вопрос 1. Правильна ли моя логика в отношении решения этой проблемы, передовой опыт?Вопрос 2. Будут ли все MAC-файлы возвращаться как «application / octect», если не используется расширение для MAC, и если да, то как кто-то может определить, какой это тип файла на самом деле?(Примечание: PDF работал нормально, когда не использовал расширения на платформе MAC).

Заранее спасибо.Если пример кода необходим, пожалуйста, сообщите.

1 Ответ

0 голосов
/ 05 января 2012

Не используйте File Extensions для разработки MIME-типов, вместо этого используйте «Winista» для бинарного анализа, см. Мой метод здесь, который возвращается к URLMon, если winista не может решить это последний ответ http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvcs/thread/d79e76e3-b8c9-4fce-a97d-94ded18ea4dd

Скажем, кто-то переименовывает exe-файл с расширением jpg ... Вы все еще можете определить «настоящий» формат файла. Он не обнаруживает SWF или FLV, но работает практически со всеми известными форматами + вы можете получить редактор шестнадцатеричных кодов и добавить больше файлов, которые он может обнаружить.

Edit: Загрузить Winista: http://www.netomatix.com/Products/DocumentManagement/MimeDetector.aspx

Этот вопрос дал мне отличную идею, поскольку вы хотите добавить расширение файла, которое будет безопасно работать на компьютерах MAC и ПК. Я / вы можете отредактировать файл mime-types.xml, включив в него безопасные расширения файлов, которые будут работать для открытия определенные типы файлов как на MAC, так и на ПК.

...