/ / (рейли) як перевірити, чи не завантажений файл .txt не є, скажімо, файлом зображення? - рубін-на-рейках, перевірка, завантаження файлів

(рейки), як перевірити, чи не завантажений .txt файл, скажімо, файл зображення? - рубіни на рейках, перевірка, завантаження файлів

У мене є поле текстового файлу для завантаження, а разом з ним і яплануйте десь зберегти файл, а потім збережіть його розташування в базі даних. Однак я хочу переконатися, що завантажений ними файл - це .txt, а не, скажімо, файл із зображеннями. Я думаю, що це відбувається на етапі перевірки. Як можна перевірити таке? Крім того, як отримати назву завантаженого файлу? Я завжди міг би просто перевірити, чи він написав ".txt", але для подальшої довідки, знаючи, як перевірити без просто імені файлу, було б корисно.

Відповіді:

7 для відповіді № 1

Спроба перевірити вміст файлу на основі розширення імені файлу відкриває двері для великих хакерств. Змінити розширення та завантажити файл - тривіально.

Якщо ви використовуєте систему на базі Mac / Linux / Unix, команда "файл" ОС є стандартною, оскільки вона знаходиться у файлі для ключових байтів, що містять типи файлів. http://en.wikipedia.org/wiki/File_(Unix) Я не впевнений, що доступно для Windows, але це може допомогти: Визначте тип файлу в Ruby


0 для відповіді № 2

Одним із способів зробити це, найпростіший спосіб - передати файл через завантажувач зображень, бажано той, який обробляє декілька загальних форматів, і побачити, чи не видає це помилку.

Інший спосіб - це вручну перевірити заголовок файлу на наявність загальних заголовків формату зображення. Наприклад, .bmp файли починаються з BM. Інші формати мають власну специфічну маркування, яку ви можете використовувати.