Я посылаю многослойный запрос от моего клиента к серверу, как это:Как знать, что реальный тип содержимого части в многочастном запросе
FileBody file2 = new FileBody(new File("./test2.txt"));
FileBody image1 = new FileBody(new File("./DSC_0064.JPG"));
и, как вы видите, один из файлов txt и один, если JPG-изображение.
На сервере, я получаю запрос, и я беру заголовки для каждой части, и я получаю это:
------------Part 1------------
content-disposition=form-data; name="test2"; filename="test2.txt"
content-type=application/octet-stream
content-transfer-encoding=binary
------------Part 2------------
content-disposition=form-data; name="image1"; filename="DSC_0064.JPG"
content-type=application/octet-stream
content-transfer-encoding=binary
Как вы видите, тип контента для них обоих application/octet-stream
. Как определить в динамической среде фактический тип? Это образ? текст? видео?
Я не могу зависеть от имени файла, потому что пользователь может изменить его, например, с txt на png, а затем мой сервер будет думать, что это изображение, но из-за этого он будет исключать.
Невозможно найти способ найти. Расширения файлов предназначены для этой цели точно. После того, как файл находится в байтах, это может быть текст, сжатые данные, изображения, песни и т. Д. Что вы можете сделать, это поймать ошибку и игнорировать этот файл. Вы можете сделать это на стороне клиента даже, поэтому сервер не получает много мусора – BlueMoon93