400 Bad Request

Bad Request

Your browser sent a request that this server could not understand.

C++ / WinSock - Získání MimeTypu URL (Get MimeType from URL)

C++ / WinSock - Získání MimeTypu URL (Get MimeType from URL)

Příspěvekod Wlezley » 20 duben 2012 02:56:47

Nazdar!

Dlouho jsem tu nic nepublikoval, proto jsem se rozhodl to tu trochu zpestřit a osvěžit něčím novým.

Psal jsem program pro stahování obrázků (a swf) z jedné webové galerie. Stahování souborů jsem řešil přes jednoduchou WinAPI funkci URLDownloadToFile(). Stahování fungovalo perfektně, až na jeden detail. Ta galerie používala tzv. SEO URL (například: www.exaple.com/gallery/image/full/1jO4als8er9se8fd/), takže jsem neznal přípony souborů. Proto jsem stahoval soubory bez přípon, následně jsem je otevřel, přečetl jsem první 4 bajty, na základě kterých jsem rozpoznával o jaký soubor se jedná. Nakonec jsem přejmenoval soubor tak, aby měl správnou příponu a takhle pořát dokola.
Kód: Vybrat vše
JPG: 0xFF 0xD8
GIF: 0x47 0x49 0x46
PNG: 0x89 0x50 0x4E 0x47
SWF: 0x43 0x57 0x53
SWF: 0x46 0x57 0x53

Byla to značně neefektivní metoda. Hlavně proto, protože jsem potřeboval vědět jestli soubor již na disku existuje, nebo ne. Pokaždé jsem ho musel stáhnout celý, zjistit celé jméno, ... zkrátka to žralo moc času.

Rozhodl jsem se na to jít jinak. Jednoduše si nechávám posílat hlavičku requestem HEAD přímo z webového serveru. Obsahuje totiž (mimojiné) i položku Content-Type. Tam ja právě zapsaný MIME type, tedy typ souboru dle standardu Multipurpose Internet Mail Extensions.

Myslím, že se není třeba dále zdržovat teorií a předvedu rovnou můj zdrojový kód, ve kterém toto demonstruji.
První argument příkazové řádky je URL. URL může (ale nemusí) začínat řetězcem http:// ...
SOURCE: http://paste.wlezley.eu/index.php/view/94255648
BIN DOWNLOAD (win32):
mimelookup_(win32).zip
mimelookup.exe - Win32 binary (CLR)
(55.77 KiB) 886 krát


Náhled (přesunul jsem si to do složky C:\Windows\System32\ a pojmenoval jsem to mimelookup.exe):
Obrázek

Jen by ještě stálo za zmínku, že zdrojový kód jsem psal a ladil asi tak dlouho, jako jsem strávil psaním tohoto článku. :flex:
Uživatelský avatar
Wlezley
 
Příspěvky: 316
Registrován: 24 září 2011 22:54:46
Bydliště: Plzeň
Projekt: Wlezley EU

Zpět na C/C++

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků


cron