Как проверить, является ли файл действительным xlsx-файлом в java без открытия с помощью POI? - PullRequest
0 голосов
/ 02 октября 2018

В java (jdk 1.6) есть способ проверить, является ли файл действительным xlsx, не открывая весь файл с помощью POI или другого API.В настоящее время мы используем Apache POI в проекте для открытия файла - в основном мы создаем новую XSSFWorkbook (inputStream) и, если это вызывает исключение, это не допустимый xlsx.Однако мы обнаружили, что один файл xlsx, размером 8 МБ, по какой-то причине требует 1 ГБ памяти и фактически вызвал перебои в работе наших серверов.Мы не можем полагаться на расширение файла, так как кто-то может взять файл, который не является xlsx, как файл php, и переименовать его с расширением xlsx.Я ищу вариант, который имеет минимальное влияние на память - в идеале - вообще не открывать файл.

Слишком большой риск, если одна загрузка файла может убить сервер, но нам также нужно проверитьфайл на самом деле является xlsx.

1 Ответ

0 голосов
/ 02 октября 2018

Если вы вообще не знаете, какой у вас файл, используйте Apache Tika для обнаружения - он может обнаружить огромное количество различных форматов файлов для вас.

Определите тип файла MS Excel с помощью Apache POI

. Вот несколько примеров https://www.baeldung.com/apache-tika

...