• SpringMVC实现文件上传


    SpringMvc文件上传和下载

    文件上传的回顾

    文件上传的必要前提

    1. from表单的enctype取值必须是 multipart/from-data

      (默认值是:application/x-www-form-urlencoded)

      enctype:是表单请求正文的类型

    2. method属性取值必须是Post

    3.提供一个文件选择域<input type=”file” />

    只借助第三方组件实现文件上传, 非SpringMVC中的文件上传方式

    使用Commons-fileupload组件实现文件上传,

    需要导入该组件相应的支撑jar包:Commons-fileupload和commons-io。

    commons-io 不属于文件上传组件的开发jar文件,但Commons-fileupload 组件从1.1 版本开始,它工作时需要commons-io包的支持。

    1. 导入文件上传的jar包

    <dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
    </dependency>
    <dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
    </dependency>

    2. 编写文件上传的JSP页面:

    <h3>文件上传</h3>
    <form action="user/fileupload" method="post" enctype="multipart/form-data">
      选择文件:<input type="file" name="upload"/><br/>
      <input type="submit" value="上传文件"/>
    </form>

    3. 编写文件上传的Controller控制器

    /**
         * 文件上传
         * @return
         */
        @RequestMapping("/fileupload1")
        public String fileuoload1(HttpServletRequest request) throws Exception {
            System.out.println("文件上传...");
    
            // 使用fileupload组件完成文件上传
            // 上传的位置
            String path = request.getSession().getServletContext().getRealPath("/uploads/");
            // 判断,该路径是否存在
            File file = new File(path);
            if(!file.exists()){
                // 创建该文件夹
                file.mkdirs();
            }
    
            // 解析request对象,获取上传文件项
    DiskFileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    // 解析request List<FileItem> items = upload.parseRequest(request); // 遍历 for(FileItem item:items){ // 进行判断,当前item对象是否是上传文件项 if(item.isFormField()){ // 说明普通表单向 }else{ // 说明上传文件项 // 获取上传文件的名称 String filename = item.getName(); // 把文件的名称设置唯一值,uuid String uuid = UUID.randomUUID().toString().replace("-", ""); filename = uuid+"_"+filename; System.out.println ("filename : "+filename); // 完成文件上传 item.write(new File(path,filename)); // 删除临时文件 item.delete(); } } return "success"; }

    SpringMVC的文件上传

    Jsp代码

        <h3>Springmvc文件上传</h3>
        <form action="user/fileupload2" method="post" enctype="multipart/form-data">
            选择文件:<input type="file" name="upload" /><br/>
            <input type="submit" value="上传" />
        </form>

    控制器代码:

        /**
         * SpringMVC文件上传
         * @return
         */
        @RequestMapping("/fileupload2")
        public String fileuoload2(HttpServletRequest request, MultipartFile upload) throws Exception {
            System.out.println("springmvc文件上传...");
            // 使用fileupload组件完成文件上传
            // 上传的位置
            String path = request.getSession().getServletContext().getRealPath("/uploads/");
            // 判断,该路径是否存在
            File file = new File(path);
            if(!file.exists()){
                // 创建该文件夹
                file.mkdirs();
            }
    
            // 说明上传文件项
            // 获取上传文件的名称
            String filename = upload.getOriginalFilename();
            // 把文件的名称设置唯一值,uuid
            String uuid = UUID.randomUUID().toString().replace("-", "");
            filename = uuid+"_"+filename;
            // 完成文件上传
            upload.transferTo(new File(path,filename));
    
            return "success";
        }

    配置文件解析器:

    文件上传的解析器id是固定的,不能起别的名称,否则无法实现请求参数的绑定。(不光是文件,其他字段也将无法绑定)

    <!--配置文件解析器对象-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
       <!-- 设置上传文件的最大尺寸 -->

    <property name="maxUploadSize" value="10485760" />
    </bean>
  • 相关阅读:
    FTP登录 下载上传文件(太过简单暂时未写)
    依据文档批次命名图片
    UDP协议
    tcp协议(三次握手 四次挥手)
    1956年人工智能元年,而今天是我进入人工智能的日子,哈哈哈
    对比文件简易代码
    爬取网站内容,存放到excel中
    Redis-Py 使用
    python list减法
    sort 使用key函数时,赋多个排序参数
  • 原文地址:https://www.cnblogs.com/mkl7/p/10803086.html
Copyright © 2020-2023  润新知