SpringMVC__文件上传MultipartResolver实现(笔记)

  1. 文件上传
  • Spring MVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的。

  • Spring 用 Jakarta Commons FileUpload 技术实现了一个 MultipartResolver 实现类:CommonsMultipartResovler  

  • Spring MVC 上下文中默认没有装配 MultipartResovler,因此默认情况下不能处理文件的上传工作,如果想使用 Spring 的文件上传功能,需现在上下文中配置 MultipartResolver

  • 配置 MultipartResolver

defaultEncoding: 必须和用户 JSP 的 pageEncoding 属性一致,以便正确解析表单的内容

为了让 CommonsMultipartResovler 正确工作,必须先将 Jakarta Commons FileUpload 及 Jakarta Commons io 的类包添加到类路径下。

  1. 文件上传示例

  • 拷贝jar包

commons-fileupload-1.2.1.jar

commons-io-2.0.jar

严重: Servlet /SpringMVC_06_FileUpload threw load() exception

java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory

  • 配置文件上传解析器

<!-- 配置文件上传解析器

id必须是"multipartResolver",否则,会报错误:

java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured?

 -->

<bean id="multipartResolver"

 class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<property name="defaultEncoding" value="UTF-8"></property>

<property name="maxUploadSize" value="1024000"></property>

</bean>

  • 上传页面

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

 "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<form action="testUpload" method="post" enctype="multipart/form-data">

文件: <input type="file" name="file"/><br><br>

描述: <input type="text" name="desc"/><br><br>

<input type="submit" value="提交"/>

</form>

</body>

</html>

  • 控制器方法

package com.atguigu.springmvc.crud.handlers;

 

import java.io.IOException;

import java.io.InputStream;

 

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.multipart.MultipartFile;

 

@Controller

public class UploadHandler {

 

@RequestMapping(value="/testUpload",method=RequestMethod.POST)

public String testUpload(@RequestParam(value="desc",required=false) String desc, @RequestParam("file") MultipartFile multipartFile) throws IOException{                

System.out.println("desc : "+desc);

System.out.println("OriginalFilename : "+multipartFile.getOriginalFilename());

InputStream inputStream = multipartFile.getInputStream();

System.out.println("inputStream.available() : "+inputStream.available());

System.out.println("inputStream : "+inputStream);

 

return "success"; //增加成功页面: /views/success.jsp

}

}

  1. 思考多个文件上传?

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值