Я пишу собственный модуль на C++ для IIS7/8, целью которого является отклонение загрузки файлов, поступающих в IIS с определенными расширениями.Проанализируйте поля сложения содержимого многоформатного типа Mime
Я получил модуль, работающий с использованием OnReadEntity, и вы можете увидеть тело запроса при отправке файлов после отправки.
Однако, будучи довольно неопытным с C++, я понятия не имею, как я могу надежно проанализировать поля Content-Disposition из тела запроса, чтобы я мог получить все имена файлов.
Ниже приведен пример запрос:
------WebKitFormBoundaryUomVPwKHGvBwvDhP
Content-Disposition: form-data; name="attach1"; filename="YSMIsapiFilter.sln"
Content-Type: text/plain
SomeDataHere
------WebKitFormBoundaryUomVPwKHGvBwvDhP
Content-Disposition: form-data; name="attach2"; filename="ysmISAPIFilter.log"
Content-Type: application/octet-stream
I AM A LOG
------WebKitFormBoundaryUomVPwKHGvBwvDhP
Content-Disposition: form-data; name="enter_a_number"
------WebKitFormBoundaryUomVPwKHGvBwvDhP--
ol: max-age=0
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Cookie: ASPSESSIONIDSSSRCTRS=GHMFFGABJAAOAEHFCFIOOJIO
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36
Upgrade-Insecure-Requests: 1
Кто-нибудь знает, если есть что-то в httpserv.h API, чтобы сделать это для меня уже. Или, если для этого требуется бесплатный парсер безрецептурного типа, создающий Visual Studio 2015.
Или мне нужно было бы самому разобрать его.
Из того, что я могу собрать, Content-Disposition и content-type всегда должны быть 2-й и 3-й строками после строки, начинающейся с ------, Chrome, FireFox и т. Д. И т. Д.). Тогда мне просто нужно было перейти к следующему ------ если он есть.
Content-Disposition через спецификацию RFC утверждает, что это всегда будут данные формы; за которым следует имя поля формы «attach1», а затем любые данные, которые идут с этим вводом «имя файла» в случае ввода типа «файл».
Просто ищите точки в правильном направлении на этом.
Я уже пробовал использовать Mimetic, но я не мог его построить, когда добавляю заголовок в свой проект. Проект Win32 поставляется с сборками, но он не будет построен на моем.