Как установить максимальный лимит на количество файлов, загружаемых с помощью Spring MVC? - PullRequest
0 голосов
/ 29 сентября 2018

Я разрешаю загружать файлы JPG в мою программу.Я хочу установить предел количества фотографий, скажем, 15.

Итак, в моем файле JSP есть следующее:

<td  class="upload-pic"><input class="file-submit" type="file" name="fileUpload" size="50" multiple="multiple" accept=".jpg"/></td>

И вот частьмой контроллерЭто прекрасно работает, и я мог бы проверить здесь или сделать так, чтобы программа не загружала, если есть более 15 фотографий, НО я хочу отправить пользователю сообщение, сообщающее ему, что он не может загрузить более 15 фотографий.,

@RequestMapping(value = "publish4" ,method = RequestMethod.POST)
public ModelAndView publish4(@Valid @ModelAttribute("fourthPublicationForm") final FourthPublicationForm form, final BindingResult errors,
                             @RequestParam("type") String type, @RequestParam("operation") String operation , @RequestParam CommonsMultipartFile[] fileUpload) {
    if (errors.hasErrors()) {
        //return publish4();
    }
    long userid = us.findByUsername(SecurityContextHolder.getContext().getAuthentication().getName()).getUserId();
    Publication aux = ps.create(form.getTitle(), form.getAddress(), operation, form.getPrice(), form.getDescription(), 
            type, form.getBedrooms(), form.getBathrooms(), form.getFloorSize(), form.getParking(),userid);


    if (fileUpload != null && fileUpload.length > 0) {
        for (CommonsMultipartFile aFile : fileUpload){

            System.out.println("Saving file: " + aFile.getOriginalFilename());


            UploadFile uploadFile = new UploadFile();

            uploadFile.setId((int) (Math.random()*1000000));

            uploadFile.setPublicationId(Long.toString(aux.getPublicationid())); 

            uploadFile.setData(aFile.getBytes());

            final long limit = 20 * 1024 * 1024; //10MB

            System.out.println("I'm about to save with id: " + uploadFile.getId());
            if(aFile.getSize() < limit && uploadFile.getData().length > 0) {
                if(aFile.getOriginalFilename().contains(".jpg")) {
                    fileUploadImpl.save(uploadFile); 
                }else {
                    System.out.println("Sth went wrong with file format");
                }

            }else {
                System.out.println("File is too big or it's empty");
            }


        }
    }
    return new ModelAndView("redirect:/meinHaus/home");
}

Как вы видите, я объявил это в своем контроллере @Valid @ModelAttribute ("thirdPublicationForm") в окончательной форме FourthPublicationForm

Но я не уверен, как получить количество файлов изтут же показать сообщение?Прямо сейчас этот класс пуст.

1 Ответ

0 голосов
/ 29 сентября 2018

Я не уверен, что правильно понял запрос;если вы хотите проверить количество загруженных файлов, то в вашем коде fileUpload.length даст вам это.А затем отправьте предупреждающее сообщение на ваш jsp (просмотр) с контроллера примерно так

attributes.addFlashAttribute("errorMsg", "Not more than 15 files allowed!");

Проверьте эту ссылку https://howtodoinjava.com/spring-mvc/spring-mvc-multi-file-upload-example/ (может не открыться в Chrome), он сделал то же самое, но с помощьюСписок MultipartFile для изображений вместо массива.Кроме того, с RequestParam вы можете проверить размер с минимальным и максимальным пределами, см. Эту ссылку для String https://www.javaquery.com/2018/02/passing-and-validating-requestparam-in.html. Но я не знаю, будет ли это работать для массива объектов в вашем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...