如何对使用Spring MVC上传的文件量设置最大限制?

时间:2018-09-29 14:55:12

标签: java spring spring-mvc

我允许在程序中上传JPG文件。我想做的是设置照片数量的限制,例如15张。

所以我的JSP文件中包含以下内容:

@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");
}

这是我的控制器的一部分。这项工作正常,如果超过15张照片,我显然可以在此处进行检查或使程序不上传,但是我要向用户发送一条消息,让他知道他不能上传15张以上的照片。

for (auto& s : company)
{
    cout << s.index << endl;
}

如您所见,我在控制器中声明了这一点 @Valid @ModelAttribute(“ fourthPublicationForm”)最终的ThirdPublicationForm表单

但是我不确定如何从那里获取文件数量然后显示消息?现在该课程为空。

1 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解了查询;如果您要检查上传的文件数,那么在您的代码中,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,您可以检查带有最小和最大限制的大小,请参阅此链接以获取字符串https://www.javaquery.com/2018/02/passing-and-validating-requestparam-in.html。但是,我不知道它是否适合您的情况下的一系列对象。