• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Y-wee
博客园    首页    新随笔    联系   管理     

springmvc之文件上传

springmvc之文件上传

1、导包

  • 基于maven
<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、传统上传方式

2.1、编写jsp

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

2.2、编写控制器

/*** 文件上传 
 * @throws Exception 
 */
@RequestMapping(value="/fileupload") 
public String fileupload(HttpServletRequest request) throws Exception {
    // 先获取到要上传的文件目录 
    String path = request.getSession().getServletContext().getRealPath("/uploads"); 
    // 创建File对象,一会向该路径下上传文件 
    File file = new File(path); 
    // 判断路径是否存在,如果不存在,创建该路径 
    if(!file.exists()) { 
        file.mkdirs(); 
    }
    // 创建磁盘文件项工厂 
    DiskFileItemFactory factory = new DiskFileItemFactory(); 
    ServletFileUpload fileUpload = new ServletFileUpload(factory); 
    // 解析request对象 
    List<FileItem> list = fileUpload.parseRequest(request); 
    // 遍历 
    for (FileItem fileItem : list) { 
        // 判断文件项是普通字段,还是上传的文件 
        if(fileItem.isFormField()) {
        
        }else { 
            // 上传文件项,获取到上传文件的名称 
            String filename = fileItem.getName(); 
            // 上传文件 
            fileItem.write(new File(file, filename)); 
            // 删除临时文件 
            fileItem.delete(); 
        } 
    }
    return "success"; 
}

3、springmvc方式文件上传

SpringMVC框架提供了MultipartFile对象,该对象表示上传的文件,要求变量名称必须和表单file标签的name属性名称相同。

3.1、控制器代码

/*** SpringMVC方式的文件上传
** @param request 
* @return 
* @throws Exception 
*/ 
@RequestMapping(value="/fileupload2") 
    public String fileupload2(HttpServletRequest request,MultipartFile upload) throws Exception {    
     System.out.println("SpringMVC方式的文件上传..."); 
     // 先获取到要上传的文件目录 
     String path = request.getSession().getServletContext().getRealPath("/uploads"); 
    // 创建File对象,一会向该路径下上传文件 
    File file = new File(path); 
    // 判断路径是否存在,如果不存在,创建该路径  
    if(!file.exists()) {
        file.mkdirs(); 
     }
    // 获取到上传文件的名称 
    String filename = upload.getOriginalFilename(); 
    String uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase(); 
    // 把文件的名称唯一化 
    filename = uuid+"_"+filename; 
    // 上传文件 
    upload.transferTo(new File(file,filename)); 
    return "success";
}

3.2、配置文件解析器

<!--配置文件解析器对象,要求id名称必须是multipartResolver-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
    <!--设置上传文件的最大尺寸-->
    <property name="maxUploadSize" value="10485760"/> 
</bean>
记得快乐
posted @ 2020-10-19 16:06  Y-wee  阅读(131)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3