Бетке Сергей: iT блог
PowerShell: Откриване на MIME за файлови или неочевидни проблеми при извикване на FindMimeFromData
Челно решение
И така, ще използваме API на FindMimeFromData. Ето обвивка за използване на тази функция в PowerShell:
Позволете ми да насоча вниманието ви към един важен момент, с който самият аз загубих половин час. Обърнете внимание на типа параметри pwzUrl, pwzMimeProposed. Не е [System.String], а [System.Text.StringBuilder]. Този тип трябва да се използва в обвивки, ако има нужда да може да се предаде null като стойност на параметър, а не празен низ.! Ако използвате типа [System.String], указателят към празен низ ще бъде предаден на API, което не е същото за много функции на Windows API.
По-долу е директно кода на PowerShell за определяне на MIME на файла (ако файлът не съществува, MIME ще се определя от неговото име, по-точно от разширението, което ни е необходимо):
Горният код отлично разпознава MIME по съдържанието на файла, а ако файлът не съществува - по разширението на името му.
Нека издадем командлета Get-MIME
Както можете да си представите, марширането на параметрите в горния код беше видяно в мрежата. Бях обаче объркан от обработката на изходния параметър и се прокраднаха съмнения. И всъщност c # предлага много по-„красиви“ маршалинги, включително за параметри „out“. И така, първо c # кода на нашата обвивка с новия маршалинг:
Забелязахте ли атрибутите, които определят марширането на изходния параметър? И сега кодът за нашия cmdlet:
Е, сега е много лесно да се определи MIME типът за файлове:
Горният код за съществуващ файл ще определи MIME по съдържание, за недостъпен - по разширението на името на файла.
- Изгонването на мигранти е проблем за Сахалин
- Aevit за кожата - решението на много проблеми
- Алгоритъм за използване на средства за ретракция на венечния ръб при ортопедично лечение на пациенти с
- Бронхикум сироп за кашлица, таблетки за деца и бременност
- Шофьорска книжка за пациенти с диабет Медицински блог за линейки