2013-01-09 12 views
5

Jak mogę sprawdzić, czy plik jest w formacie jpeg, pdf lub tiff? I mam na myśli sprawdzanie, nie tylko od typu MIME i rozszerzenia pliku.Sprawdź, czy plik jest JPEG, PDF lub TIFF

Mam dostęp do danych nieprzetworzonych plików (ta kontrola jest częścią programu do przesyłania) i muszę sprawdzić, czy pliki są w formacie jpeg, pdf lub tiff. Zakładam, że musiałbym sprawdzić jakieś nagłówki w plikach, ale nie mam pojęcia, czego szukać i od czego zacząć.

Odpowiedz

1

Należy zaimplementować testy sekwencji bajtów.

Here to przewodnik po sprawdzaniu sekwencji bajtów dla najpopularniejszych formatów obrazu.

+1

Jedna z najgorszych odpowiedzi. Bezpośredni link bez przykładowego kodu. –

+0

Jeden z najgorszych komentarzy. Nie możesz zmienić "najgorszego" z przymiotnikiem. –

+0

Mój komentarz pokazuje, że mój angielski jest zły, a Twój komentarz pokazuje, że Twoje podejście jest złe. W każdym razie dziękuję za dobrą uwagę na temat "najgorszego". –

1

Jeśli masz dostęp do nieprzetworzonego pliku, możesz sprawdzić nagłówek pliku dla jego magic number. Ta liczba określa typ pliku.

0

Może to być trudne, ponieważ wszystkie pliki muszą być zgodne z pewnym standardem ISO z obecnością "magicznej liczby", która w zasadzie jest "nagłówkiem" dla formatu.

Znalazłem tę stronę wiki o różnych podpisów: http://en.wikipedia.org/wiki/List_of_file_signatures

Więc w najlepszym scenariuszu wystarczy, aby potwierdzić te pierwsze bajty.

0

Aby sprawdzić typy obrazów, można użyć funkcji exif_imagetype. do pdf: trzeba otworzyć plik i przeczytać pierwsze bajty i patrzeć jeśli zaczyna się od „%” PDF

$fp = fopen($pdf, 'r'); 
if(fgets($fp, 4) == '%PDF') 
{ 
    ... is pdf 
} 
fclose($fp); 
Powiązane problemy