правильный способ убедиться, что загруженный файл CSV-файл в Grails? - PullRequest
0 голосов
/ 20 февраля 2019

Существует файл ввода, который используется для загрузки CSV-файлов.

Вот документация для многокомпонентного файла.

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/multipart/commons/CommonsMultipartFile.html

Теперь я хотел бы убедиться, что загруженный файл является CSV-файлом.Другими словами, приложение принимает только CSV-файлы.Есть два метода, которые предлагает класс commonsmultipartfile.Одним из них является contentType.Для CSV-файла он возвращает application / octet-stream.Другой метод - это originalFilename, которое дает имя файла с расширением.

enter image description here

enter image description here

Поэтому мне интересно, каков наилучший способ убедиться, что загруженныефайл в формате csvЯ сомневаюсь, что проверки contenttype недостаточно, поскольку application / octet-stream является типом mime для двоичного файла.Поэтому вы рекомендуете использовать и contenttype, и originalfilename для извлечения расширения.Я ценю любого гида.Спасибо!Я использую Grails 2.2.

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете предотвратить загрузку файлов с расширением .csv с атрибутом accept, например,

<input class="form-control" required="required" type="file" name="csvfile" id="csvfile" accept=".csv" />

Это не мешает кому-либо изменять расширение, например, в файле xslx, и пытаться загрузить его.Я склонен анализировать строку или две во время потоковой передачи файла и отклонять его, если он не соответствует шаблону, который я ожидаю.Конечно, это не может быть практичным для вашего решения.

...