zoukankan      html  css  js  c++  java
  • 文件上传——Spring MVC方式

    • 必要前提

      • form表单的enctype取值必须是multipart/form-data。enctype的功能是请求正文的类型

      • method必须是post

      • 需要有<input type="file" />标签

      • 使用commons-fileupload组件实现文件,需要导入该组件相应的支撑jar包

        • commons-fileupload-1.3.1.jar

        • commons-io-2.4.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>
      <form action="user/upload" method="post" enctype="multipart/form-data">
          <input type="file" name="avatar" />
          <input type="submit" value="上传" />
      </form>
    • Spring MVC方式上传文件

      • 在springmvc.xml配置文件中配置文件解析器,而且bean的id是一个固定值,不能改变

        <!-- 配置文件解析器 -->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!-- 文件上传的相关限制,例如文件的大小10M=10*1024*1024=10485760,这里是以字节为单位 -->
            <property name="maxUploadSize" value="10485760" />
        </bean>
    • 控制器方法的参数名称必须和表单上文件的input标签的name值相同
    import javax.servlet.http.HttpServletRequest;
    import org.springframework.web.multipart.MultipartFile;
        
    @Controller
    @RequestMapping(value="user")
    public class UserController{
        @RequestMapping(value="upload")
        public String upload(HttpServletRequest request, MultipartFile avatar) throws Exception {
            //使用fileupload组件上传文件
            //文件保存的地址
            String path = request.getSession().getServletContext().getRealPath("/uploads/");
            File file = new File(path);
            if(!file.exists()){
                file.mkdirs();
            }
            //处理文件上传项
            // 获取文件上传的名称
            String filename = avatar.getOriginalFilename();
            //使用uuid生成唯一的名称作为文件的名称
            String uuid = UUID.randomUUID().toString().replace("-", "");
            filename = uuid+"_"+filename;
            //上传文件
            avatar.transferTo(new File(path, filename));
            return "user";
        }
    }
  • 相关阅读:
    [转]utf8编码原理详解
    [转]程序员趣味读物:谈谈Unicode编码
    confluence 安装部署
    统计日志10分钟内出现的次数
    Error occurred during initialization of VM Could not reserve enough space for object heap(可能是内核参数的问题)
    Linux服务器性能查看分析调优
    python break ,continue和 pass 语句(八)
    python 循环基础(六)
    python 循环实例(七)
    python 条件控制(五)
  • 原文地址:https://www.cnblogs.com/aitiknowledge/p/12796535.html
Copyright © 2011-2022 走看看