2012-01-04 4 views
1

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

ВОПРОС: Когда пользователи MAC не вставляют расширения в свои загруженные файлы (я тестирую для параметра «Фильтр публикации» для определения файла и/или соответствующего расширения, допустимых файлов RTF, TXT, PDF, DOC, DOCX), похоже, ContentType возвращается как «приложение/октет» ... это имеет смысл для меня без расширения, как того требует ПК; все еще неясный при чтении погоды ContentType или расширение - лучший способ определить, какой тип файла он есть до того, как я присоединюсь. [Непрерывный MAC-файл, очевидно, не сможет выполнить какой-либо тест расширения)

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

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

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

+0

ContentType устанавливается клиентом, который загружает файл, и нет никакого гуанинта, что это правильный тип для загруженного файла. Также это расширение файла. Зачем вам нужно знать, какой тип файла? Вам нужно запустить определенный рабочий процесс в зависимости от типа? Или вы просто его сохранили? –

+0

, если у вас есть какой-то способ узнать разницу .DOC по сравнению с .DOCX против .TXT, если они забудут расширение .. humm Я бы, вероятно, изменил логику, чтобы убедиться, что перед загрузкой файла добавлен фильтр код загрузки, если нет файла ext или в основном есть файл с допустимыми типами. В противном случае не разрешать загрузку ... и pdf, вероятно, работало нормально, потому что тип содержимого соответствовал типу файла acatual .. но сколько других случаев это будет работать или не работать. – MethodMan

+0

Arkain: В принципе, моя цель - сохранить файл в электронном письме как вложение. Во-вторых, электронные письма и/или вложения, сгенерированные приложением, будут отправляться как пользователям ПК, так и пользователям платформы MAC.поэтому с учетом этого я попытался найти общий знаменатель (сеть безопасности), который для меня всегда прикреплял файл с использованием .EXT, который в случае пользователей MAC, которые не включают расширения, делает этот excersize трудным в лучшем случае, что ContentType действительно является «дерьмовой стрельбой» в этом контексте, или если я не сравниваю порядок байтов с некоторыми внешними библиотеками и т. д. – user699318

ответ

0

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

Say кто-то переименовывает exe с расширением jpg ... вы все равно можете определить «реальный» формат файла. Он не обнаруживает swf или flv, но делает практически любой другой известный формат + вы можете получить шестнадцатеричный редактор и добавить больше файлов, которые он может обнаружить.

Edit: Скачать Winista: http://www.netomatix.com/Products/DocumentManagement/MimeDetector.aspx

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

+0

Пробовал библиотеку Winista, работал «лучше» при определении байтов, но все же (unfortunatley) вернулся .DOCX как .ZIP ... который я получаю, но до сих пор не добираюсь до «BEST», но, безусловно, «лучше», – user699318

Смежные вопросы