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";
        }
  • 相关阅读:
    SqlServer Alwayson 搭建排错记录(一)
    SqlServer图形数据库初体验
    SqlServer报错:主体“dbo”不存在
    IIS重叠回收
    No module named 'revoscalepy'问题解决
    SqlServer查询文件组被占用情况
    SqlServer作业指定目标服务器
    [持续更新]UnsatisfiedLinkError常见问题及解决方案
    Android加载SO库UnsatisfiedLinkError错误的原因及解决方案
    _set_invalid_parameter_handler异常处理函数
  • 原文地址:https://www.cnblogs.com/mapleins/p/10130701.html
Copyright © 2011-2022 走看看