Mám formulář s inputem typu "file".
Potřeboval bych vědět, jak Java Scriptem zjistit po zmáčknutí tlačítka pro odeslání formuláře, jestli nahrávaný soubor je typu JPG.
Pokud by nebyl, akce se zruší.
Díky
sorry omylem se to vložilo dvakrát
stringem... vezmeš poslední 3 písmenka, a pak to oIFuješ...
No a to se udela jak? Ja v java scriptu opravdu nejsem jako ryba ve vode. ;-)
No, vono to jde v PHP i v JS...
Netestoval som to, ale mohlo by to ísť nejako takto:
<form action="upload.php" method="post" enctype="multipart/form-data" onsubmit="return this.subor.value.toLowerCase().substr(-4)=='.jpg'">
<input type="file" name="subor" />
</form>
Prípadne ak chceš povoliť aj koncovky jpeg, tak môžeš aj nejako takto:
return this.subor.value.match(/\.jpe?g$/i)
JavaScript sa dá ľahko obísť, takže na serveri treba kontrolovať tiež, napr. takto:
if (!in_array ($_FILES ['subor'] ['type'], array ('image/jpg', 'image/jpeg', 'image/pjpeg')))
echo 'nespravny typ suboru';
Podle koncovky je to pěkné a jednoduché.
Ale co když někdo přejmenuje třeba ZIP na JPG ?
Nevím, jak toto zkontrolovat. Pochopitelně je to v hlavičce souboru, ale do té se nedostanu.
los : Diky moc
mp: Me staci pouha kontrola jestli to je jpg. Je to do systemu s inzerci a pochybuju ze se nekdo bude snazit nahravat tam zip. ;-) Popr. je omezena velikost na 0,5 mb.
los: Skvely funguje to, ale prosim te jak by se to dalo jeste osetrit, aby:
Kdyz nezadam zadny obrazek, tak aby me to pustilo dal, pze td me to nepusti.
Máš na mysli ten JavaScript? Malo by stačiť povoliť prázdny reťazec:
onsubmit="return (this.subor.value.match(/\.jpe?g$|^$/i)!=null)"
Jen bych se podelil o svuj postreh... Pokud v PHP (mam to treba v administraci -pridavani fotek do fotogalerie) kontroluju odeslany soubor na MIME typ (image/x-jpeg nebo tak nejak), zjistil jsem, ze ten se prirazuje take jen podle pripony. Pokud chci mit jistotu, ze se jedna opravdu o JPEG - a ne treba prejmenovany GIF, zpracuju po odeslani soubor a nactu z nej znaky 7-10(cca) a ty musej byt "JFIF" (podle hlavicky JPEGu). Pokud nejsou,soubor zahodim a nahlasim chybu.Tuhle kontrolu provadim kvuli tomu, ze pak s GD pouzivam na ten obrazek (obrazky) fci CreateImageFromJPEG() apod., tak musim mit jistotu o obsahu souboru. Nevite nekdo, jak by se to dalo udelat jinak, lepe?