Я столкнулся с ситуацией, когда я пытаюсь проверить, разрешено ли загружать файлы только определенных типов.
Метод, над которым я работал, заключается в проверке заголовка кода 64b, чтобы определить, соответствует ли он принятым файлам.
dataHeader = (b64FileString.split(';'))[0]
imgRegex = /data:image\/((jpeg)|(jpg)|(gif)|(exif)|(tiff)|(bmp)|(png)|(bpg))?$/gmi;
Если я пытаюсь загрузить файл изображения image.png
заголовок выглядит следующим образом "data:image/png"
и регулярное выражение работает.
Этот метод работает, но только в определенной степени.
Начиная этот процесс, я предполагаю, что заголовок основан на фактическом формате файла, но это не так.Заголовок на самом деле просто основан на расширении файла.
Если у меня есть следующее в windows program.exe
,
, заголовок выглядит следующим образом "data:application/x-msdownload"
Регулярное выражение не совпадает, и файл не принят.
Если пользователь изменяет расширение program.exe
на program.png
,
Теперь заголовок "data:image/png"
и регулярное выражение принимает.
Что можно сделать, чтобы проверить, что файл изображения на самом деле является файлом изображения, а не помечен как-то еще?