У мене є поле текстового файлу для завантаження, а разом з ним і яплануйте десь зберегти файл, а потім збережіть його розташування в базі даних. Однак я хочу переконатися, що завантажений ними файл - це .txt, а не, скажімо, файл із зображеннями. Я думаю, що це відбувається на етапі перевірки. Як можна перевірити таке? Крім того, як отримати назву завантаженого файлу? Я завжди міг би просто перевірити, чи він написав ".txt", але для подальшої довідки, знаючи, як перевірити без просто імені файлу, було б корисно.
Відповіді:
7 для відповіді № 1Спроба перевірити вміст файлу на основі розширення імені файлу відкриває двері для великих хакерств. Змінити розширення та завантажити файл - тривіально.
Якщо ви використовуєте систему на базі Mac / Linux / Unix, команда "файл" ОС є стандартною, оскільки вона знаходиться у файлі для ключових байтів, що містять типи файлів. http://en.wikipedia.org/wiki/File_(Unix) Я не впевнений, що доступно для Windows, але це може допомогти: Визначте тип файлу в Ruby
0 для відповіді № 2
Одним із способів зробити це, найпростіший спосіб - передати файл через завантажувач зображень, бажано той, який обробляє декілька загальних форматів, і побачити, чи не видає це помилку.
Інший спосіб - це вручну перевірити заголовок файлу на наявність загальних заголовків формату зображення. Наприклад, .bmp файли починаються з BM. Інші формати мають власну специфічну маркування, яку ви можете використовувати.