zoukankan      html  css  js  c++  java
  • <SpringMvc>入门五 文件上传

    文件上传的必要条件:

      1.form表单的enctype取值必须是:mutipart/form-data (默认是:application/x-www-form-urlencoded)

      2.method属性为:post

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

            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3.3</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.6</version>
            </dependency>

    1.传统的方式上传

    form表单

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

    controller类,生成的文件在target根目录下的uploads文件夹中

    @Controller
    @RequestMapping("/fileupload")
    public class FileuploadController {
    
        /**
         * 传统的文件上传方式
         */
        @RequestMapping("/f1")
        public String f1(HttpServletRequest request) throws Exception {
            //用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;
                    //完成文件上传
                    item.write(new File(path,fileName));
                    //删除临时文件
                    item.delete();
                }
            }
            return "success";
        }
    }

    2.springmvc文件上传

     

    1.配置文件解析器

        <!-- 配置文件解析器对象,要求id名称必须是multipartResolver -->
        <bean id="multipartResolver"
              class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!--字节单位-->
            <property name="maxUploadSize" value="10485760"/>
        </bean>

    2.页面表单

        <%--springmvc模式--%>
        <form action="/fileupload/f2" method="post" enctype="multipart/form-data" >
            选择文件:<input type="file" name="upload">
            <input type="submit" value="上传">
        </form>

    3.controller

        /**
         * springmvc模式的上传
         */
        @RequestMapping("/f2")
        public String f2(HttpServletRequest request, MultipartFile upload) throws IOException {
            String path = request.getSession().getServletContext().getRealPath("/uploads");
            File file = new File(path);
            if(!file.exists()){
                file.mkdirs();
            }
            //获取文件名字
            String filename = upload.getOriginalFilename();
            String uuid = UUID.randomUUID().toString().replace("-", "");
            filename = uuid +"_"+filename;
            //完成上传
            upload.transferTo(new File(path,filename));
            return "success";
        }
  • 相关阅读:
    将n个不同的球放到m个相同的袋子里有多少种方案?

    平面分割直线2
    差分
    并查集(UnionFind)
    约瑟夫环公式
    Kruskal
    线性欧拉筛
    SPAF
    Dijkstra
  • 原文地址:https://www.cnblogs.com/mapleins/p/10130701.html
Copyright © 2011-2022 走看看