JavaWeb学习笔记(十八)SpringMVC上传文件

关于文件的上传需要两个jar包
在这里插入图片描述
关于文件上传form表单的设定
在这里插入图片描述 method:必须设定为post方式,因为get请求将参数放在 url 后面,且url后面携带的参数有限制。
enctype:必须设定为“multipart/form-data”,form表单默认为键值对的形式。

1.传统方式文件上传

传统方式上传文件的流程:

  1. 浏览器端选择文件上传
  2. 后台接收到请求,进行解析
  3. 解析后判断是否为上传项
  4. 若为上传项,进行上传
    代码
    在这里插入图片描述

2. SpringMVC上传文件

SpringMVC中利用dispacherServlet采用多个解析器用来提高开发效率,在文件上传功能中,SpringMVC提供了文件上传解析器 CommonsMultipartResolver,通过这个类,可以解析浏览器上传的文件请求,为用户省略了解析上传请求这一流程,提高了开发效率。
在这里插入图片描述

  1. 上传界面
<--! 注意这里的name值,必须与后面处理上传请求的方法接收的参数相同 !-->
 <form action="file/fileupload2" method="post" enctype="multipart/form-data">
        选择文件:<input type="file" name="upload"><br>
        <input type="submit" value="上传" >
    </form>
  1. 配置文件上传解析器
<!--    这里的bean的id 必须为 multipartResolver -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!--这里还可以设置一些参数,如:文件上传大小的限制 -->
    </bean>
  1. 处理上传的方法
    @RequestMapping("/fileupload2")
    public String fileUpload2(HttpServletRequest request, MultipartFile upload) throws Exception {

        String path = request.getSession().getServletContext().getRealPath("/uploads/");
        File file = new File(path);
        if (!file.exists()){
            file.mkdir();
        }
        // 获得到文件名
        String filename = upload.getOriginalFilename();
        filename = UUID.randomUUID().toString().replace("-","") + filename;
        // 进行上传文件,上传结束之后,会自动删除掉临时文件
        upload.transferTo(new File(path,filename));
        return "success";
    }

发现比传统方式上传高效了很多,SpringMVC的文件上传解析器已经帮用户解析了上传请求。

发布了66 篇原创文章 · 获赞 26 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Time__Lc/article/details/93464939