第5章 文件上传之传统方式

文件上传的必要前提

  • form表单的enctype取值必须是:multipart/form-data(默认值是:application/x-www-form-urlencode)

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

  • method属性取值必须是Post
  • 提供一个文件选择域<input type=”file” />

前端代码:

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

后端代码:

/**
     * 文件上传之传统方式
     * @return
     */
    @RequestMapping("/fileUpload1")
    public String fileUpload1(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;
                //完成文件上传
                item.write(new File(path, filename));
                //删除临时文件
                item.delete();
            }
        }
        return "success";
    }

需要引入的坐标:

        <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.4</version>
        </dependency>

 

发布了118 篇原创文章 · 获赞 19 · 访问量 18万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 精致技术 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览