使用 Spring中MultipartHttpServletRequest实现文件上传
一、上传对表单的要求
1) 表单的提交方式 :"method=post"
2) 表单的类型 :enctype="multipart/form-data"
3) 上传表单的文件项:<input type="file" name="xx" /> //其中名字是必须要的
二.上传的一般步骤
1.将request转化为MultipartHttpServletRequest multipartRequest= (MultipartHttpServletRequest)(request);
原理是:使用spring的CommosMultipartResolver 配置MultipartResolver 用于文件上传,DispatcherServlet 将调用 MultipartResolver 的 isMultipart(request) 方法检查当前 Web 请求是否为 multipart类型。如果是,DispatcherServlet 将调用 MultipartResolver 的 resolveMultipart(request) 方法,对原始 request 进行装饰,并返回一个 MultipartHttpServletRequest 供后继处理流程使用(最初的 HttpServletRequest 被偷梁换柱成了 MultipartHttpServletRequest),否则,直接返回最初的 HttpServletRequest。
获取文件
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; //将request转化为MultipartHttpServletRequest
MultipartFile multipartFile = multipartRequest.getFile("upload");//获取文件
InputStream is = multipartFile.getInputStream();//获取图片的文件流
String uploadContentType = multipartFile.getOriginalFilename();//获取文件的格式
jsp页面代码
<%@ page language="java" pageEncoding="UTF-8"%>
<%@include file="/include.jsp"%>
<%@page import="java.util.Date"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link href="<ph:root/>/s/css/style.css" type="text/css" rel="stylesheet" />
<link href="<ph:root/>/s/css/gh-buttons.css" type="text/css"
rel="stylesheet" />
<link href="<ph:root/>/s/css/selectinput.css" type="text/css"
rel="stylesheet" />
<link href="<ph:root/>/s/js/ueditor/themes/default/css/ueditor.css"
type="text/css" rel="stylesheet" />
<script type="text/javascript" src="<ph:root/>/s/js/jquery.min.js"></script>
<script type="text/javascript" src="<ph:root/>/s/js/jquery-1.3.2.js"></script>
<script type="text/javascript" src=