SpringMVC框架怎么在上传一个文件的模式下通过修改代码来实现可以接收上传多个文件

首先需要在JSP视图方面去修改一下代码,插入如下代码:

文件:<input type="file" name="files">
              <input type="file" name="files">
              <input type="file" name="files"><br>

JSP这边就是Controller指向的地址改变,input type="file"会增多,除此之外其他都不会改变(包括按钮的个数也不会改变,还是只有一个就行,这一步就需要Controller那边配合做个循环,一次性把图片通过循环全部上传)

映射文件这边不需要改变什么,但是如果需要设定上传文件的大小的话,可以把一开始配置上传文件的那行代码改一下 变成这样

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
              <property name="maxUploadSizePerFile" value="5000000"/>
       </bean>

反正这个就记住id不能变,然后value的值代表了文件的大小为多少。

最后的重点,就是修改Controller,为了方便看,我重新写了一个上传多个文件的Controller方法:

@PostMapping("/uploads")
    public String uploads(String username,@RequestParam CommonsMultipartFile[] files,HttpSession session){
        //获取上传目录的物理路径
        String path = session.getServletContext().getRealPath("/WEB-INF/upload/");

        for (CommonsMultipartFile file:files){
            try {
                file.transferTo(new File(path, StringUtils.renameFileName(file.getOriginalFilename())));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return "success";
    }

这里把文件名字什么的反馈全部省略掉了,直接进入主题,用String来标识一个上传文件准备存放的地址,然后通过try catch方法来存放文件,这边就做一个遍历,如果CommonsMultipartFile file:files还存在,就继续上传直到上传结束。CommonsMultipartFile是系统自带的一个方法,表示与上传文件相关,还有要注意的是,在public String uploads(String username,@RequestParam CommonsMultipartFile[] files,HttpSession session){在这里,可以看到CommonsMultipartFile后面是加了一个中括号[],一般加了中括号的都表示这个类已经不是普通的类了,它变成了一个数列,因为这里需要上传文件,所以变成了一个数列可以接纳更多的文件上传。

猜你喜欢

转载自blog.csdn.net/Andre_dong/article/details/107868946