[ mitke013 @ 12.05.2010. 17:27 ] @
Imam problem:

moj program treba da proveri da li je uploadovani fajl zaista mp3. Posto je php verzija 5.2., ne mogu da koristim 'finfo_file'. Funkcija 'mime_content_type' mi i na lokalnoj (windows) i na serveru (linux) daje pogresan odgovor, ne mogu da se setim tacno sta.

Preko pear-a sam instalirao mp3 id paket, ali mi se ne svidja nacin na koji moram da ga koristim.

return $mp3->lengths > 0 ;

jer je atribut lengths jedini koji ostaje 0 ako fajl nije validan. Problem je sto ponekad za pogresno upload-ovani fajl, ispisuje mi brdo php gresaka. Naravno da cu iskljuciti njihov ispis u finalnoj verziji, ali jednostavno, ne volim takve stvari.

Kako da resim ovaj problem na kulturniji nacin?
[ Miroslav Ćurčić @ 12.05.2010. 18:54 ] @
mp3 format ima bar 20ak podformata,
jedanom moj prijatelju je svojevremeno trebalo nešto slično za desktop aplikaciju pa je naišao na razna mp3 zaglavlja pa je morao da piše parser za svaki podformat,
tako da ti ne savetujem da pišeš svoj od nule.
[ Nikola Poša @ 12.05.2010. 20:43 ] @
Citat:
mitke013: Funkcija 'mime_content_type' mi i na lokalnoj (windows) i na serveru (linux) daje pogresan odgovor, ne mogu da se setim tacno sta.

U kom smislu "daje pogresan odgovor"? Šta dobijaš kad izvršiš ini_get('mime_magic.magicfile');?
[ mitke013 @ 12.05.2010. 21:15 ] @
Citat:
Miroslav Ćurčić: mp3 format ima bar 20ak podformata,
jedanom moj prijatelju je svojevremeno trebalo nešto slično za desktop aplikaciju pa je naišao na razna mp3 zaglavlja pa je morao da piše parser za svaki podformat,
tako da ti ne savetujem da pišeš svoj od nule.


Ne, ne pisem ispocetka nego trazim neko multipraktik resenje koje bi npr. prepoznalo da je mp3, bez obzira na podformat.

Citat:
Nikola Poša: U kom smislu "daje pogresan odgovor"? Šta dobijaš kad izvršiš ini_get('mime_magic.magicfile');?


Dobijam C:\php5\magic.mime

Za mp3 sam dobijao odgovor da je npr. application/xd4 ili slicno, i na netu sam video da nisam jedini koji ima taj problem. Mislim da su svi odgovori i bili da se predje na php5.3, sto je u mom slucaju neizvodljivo. Neke gotove klase koje sam probao su takodje bile neupotrebljive; nijedna nije prepoznala da nisam postavio .mp3 fajl, ali je ipak pokusala da izvuce tagove, duzinu itd... i vracala bezveze odgovore. Ovu sto koristim... pa radi, ali jadno.

Da li si nekad radio sa tim? Znam i za problem da moram da prosledim putanju do magic fajla bez ektenzije, ali mi uvek davao pogresan odgovor. Dok za slike sam dobijao tacan rezultat.
[ Predrag Supurovic @ 12.05.2010. 21:37 ] @
Svojevremeno ima tome godina sam se bavio ovim problemom i objavio sam tehnicke podatek i sors kod doduse u Delphiju koji se tiem bavio. Koliko ynam, neko je napravio, ali mislim u perlu rutine koje su prema tim podacima radile sa mp3 datotekama.

Nazalost, nije lako utvrditi da neka datoteka nije mp3. Format je takav da je lako omanuti u prepoznavanju. Generalno, dobar princip je da proba da u detoteci nadjes prvi frejm (on ne mora biti na pocetku datoteke) a zatim na osnovu njega jos dva-tri sledeca frejma, i ako se oni slože onda da smatras da si stvarno dobio mp3 datoteku.
[ Nikola Poša @ 12.05.2010. 22:02 ] @
A jel dobijaš išta upotrebljivo u $_FILES['ime_fajla']['type']?

btw Vidi dal' možeš da uradiš nešto sa ovom PHP skriptom.
[ mitke013 @ 13.05.2010. 11:33 ] @
U $_FILES nista upotrebljivo, ali sam u toj arhivi nasao nesto interesantno; regex-e za mp3, pa cu videti ako mogu nesto iz toga da izvucem. Hvala.
[ mitke013 @ 25.06.2010. 13:18 ] @
Ako nekog zanima, program sto je Nikola linkovao je odlican za validaciju bilo kog fajla, ne samo MP3 vec i slika, dokumenata... zaista podrzava sve zivo i gomila podataka o fajlu se jako lako moze procitati.

Ko hoce da se igra sa tim, a ima Win masinu, mora da skine i helpepapps, bez toga nece da radi.