/ / (szyny) jak sprawdzić, czy przesłany plik .txt nie jest, powiedzmy, plikiem obrazu? - ruby-on-rails, sprawdzanie poprawności, przesyłanie plików

(szyny), jak sprawdzić, czy przesłany plik .txt nie jest, powiedzmy, plikiem graficznym? - ruby-on-rails, sprawdzanie poprawności, przesyłanie plików

Mam pole do przesłania pliku tekstowego, a wraz z nim mamplanuj gdzieś zapisać plik, a następnie zapisz lokalizację pliku w bazie danych. Chcę jednak upewnić się, że przesłany plik jest plikiem .txt, a nie, powiedzmy, plikiem graficznym. Wyobrażam sobie, że dzieje się to na etapie weryfikacji. Jak można to potwierdzić? Ponadto, jak uzyskać nazwę pliku przesłanego pliku? Zawsze mogłem po prostu sprawdzić, czy jest napisane „.txt”, ale przydałoby się w przyszłości wiedzieć, jak sprawdzić poprawność bez nazwy pliku.

Odpowiedzi:

7 dla odpowiedzi № 1

Próba sprawdzenia poprawności zawartości pliku na podstawie rozszerzenia nazwy pliku otwiera drzwi do poważnych hackerów. Zmiana rozszerzenia i przesłanie pliku jest banalne.

Jeśli korzystasz z systemu Mac / Linux / Unix, komenda „file” systemu operacyjnego jest standardem, ponieważ szuka w pliku kluczy bajtów oznaczających typy plików. http://en.wikipedia.org/wiki/File_(Unix) Nie jestem pewien, co jest dostępne dla systemu Windows, ale może to pomóc: Określ typ pliku w Ruby


0 dla odpowiedzi nr 2

Jednym ze sposobów, naprawdę prostym, byłoby przepuszczenie pliku przez moduł ładujący obraz, najlepiej taki, który obsługuje wiele popularnych formatów i sprawdzenie, czy generuje błąd.

Innym sposobem jest ręczne sprawdzenie nagłówka pliku pod kątem popularnych nagłówków formatu obrazu. Na przykład pliki .bmp zaczynają się od BM. Inne formaty mają własne określone oznaczenia, których możesz użyć.