Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对使用SpringMVC上传的文件数量设置最大限制?_Java_Spring_Spring Mvc - Fatal编程技术网

Java 如何对使用SpringMVC上传的文件数量设置最大限制?

Java 如何对使用SpringMVC上传的文件数量设置最大限制?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我允许在我的程序中上传JPG文件。我想做的是设置照片数量的限制,比如说15张 因此,我在JSP文件中获得了以下内容: <td class="upload-pic"><input class="file-submit" type="file" name="fileUpload" size="50" multiple="multiple" accept=".jpg"/></td> 这是我控制器的一部分。这很好,我可以在这里检查,如果有超过15张照片,我可以

我允许在我的程序中上传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");
}
@RequestMapping(value=“publish4”,method=RequestMethod.POST)
public model和view publish4(@Valid@modeldattribute(“fourthPublicationForm”)final fourthPublicationForm表单,final BindingResult错误,
@RequestParam(“类型”)字符串类型、@RequestParam(“操作”)字符串操作、@RequestParam CommonsMultipartFile[]文件上载){
if(errors.hasErrors()){
//返回publish4();
}
long userid=us.findByUsername(SecurityContextHolder.getContext().getAuthentication().getName()).getUserId();
Publication aux=ps.create(form.getTitle()、form.getAddress()、operation、form.getPrice()、form.getDescription(),
类型,form.getBedrooms(),form.getBathrooms(),form.getFloorSize(),form.getParking(),userid);
if(fileUpload!=null&&fileUpload.length>0){
用于(CommonsMultipartFile文件:fileUpload){
System.out.println(“保存文件:+aFile.getOriginalFilename());
UploadFile UploadFile=新的UploadFile();
uploadFile.setId((int)(Math.random()*1000000));
uploadFile.setPublicationId(Long.toString(aux.getPublicationid());
uploadFile.setData(aFile.getBytes());
最终长限=20*1024*1024;//10MB
System.out.println(“我要用id:+uploadFile.getId()保存);
if(aFile.getSize()0){
如果(aFile.getOriginalFilename()包含(“.jpg”)){
fileUploadImpl.save(上传文件);
}否则{
System.out.println(“文件格式出错”);
}
}否则{
System.out.println(“文件太大或为空”);
}
}
}
返回新模型和视图(“重定向:/meinHaus/home”);
}
正如你所见,我在控制器中声明了这一点 @有效@ModelAttribute(“第四次发布表单”)最终第四次发布表单


但我不知道如何从那里获取文件量,然后显示消息?现在这个类是空的

我不确定我是否正确理解了这个问题;如果你想检查上传的文件数量,那么在你的代码中,
fileUpload.length
会告诉你。然后从控制器向jsp(视图)发送一条警告消息,如下所示

attributes.addFlashAttribute("errorMsg", "Not more than 15 files allowed!");
查看此链接(可能不会在Chrome中打开),他也做了类似的事情,但使用了图像的多部分文件列表,而不是数组。
此外,使用
RequestParam
,您可以使用最小和最大限制检查大小,请参阅此链接以了解字符串。但是,我不知道它是否适用于您的情况下的对象数组。

是的,您是对的,我没有想到这一点。为了在JSP中显示该消息,我应该向JSP中添加什么?我不应该在控制器中添加属性类型的参数吗?好的,我刚刚解决了这个问题。最后返回了一个新的mav并添加了一个新的字符串对象。“谢谢你,”我很高兴听到你这么说