JAVA代码 ·

spring 3.0+spring MVC+Hibernate框架 文件上传功能

1、注解

	<!-- 上传文件bean -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
		<property name="defaultEncoding" value="utf-8" /> 
		<property name="maxUploadSize"   value="10485760000" /> 
		<property name="maxInMemorySize" value="40960" /> 
	</bean>
	<!-- 处理文件上传 -->
<!-- 	<bean id="multipartResolver"  
    	class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >  
    	<property name="defaultEncoding" value="gbk"/> 默认编码 (ISO-8859-1)  
    	<property name="maxInMemorySize" value="10240"/> 最大内存大小 (10240)  
    	<property name="uploadTempDir" value="/upload/"/> 上传后的目录名 (WebUtils#TEMP_DIR_CONTEXT_ATTRIBUTE)  
    	<property name="maxUploadSize" value="-1"/> 最大文件大小,-1为无限止(-1)  
	</bean> -->

2、upload.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>测试springmvc中上传的实现</title>
	</head>
	<body>
<form action="upload.do"  method="post" enctype="multipart/form-data">
			<input type="text" name="name" />
			<input type="file" name="file" />
			<input type="submit" />
		</form>
	</body>
</html>

3、load_ok.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
	   <h1>上传成功!</h1>
  </body>
</html>

4、upload_error.jsp

 <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
	   <h1>上传失败!</h1>
  </body>
</html>

5、主代码

import java.io.File;
import java.util.Date;

import javax.servlet.ServletContext;

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.context.ServletContextAware;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

@Controller
public class FileUploadController implements ServletContextAware {

	private ServletContext servletContext;

	public void setServletContext(ServletContext context) {
		this.servletContext=context;
	}
	public ServletContext getServletContext() {
		return servletContext;
	}
	
	@RequestMapping(value="/upload.do",method=RequestMethod.POST)
	public String handlerUploadDate(String name,@RequestParam("file")CommonsMultipartFile file){
		if(!file.isEmpty()){
			String path=this.servletContext.getRealPath("/upload/"); //获取本地存储路径
			String fileName=file.getOriginalFilename();
			String fileType=fileName.substring(fileName.lastIndexOf("."));
			File file2=new File(path, new Date().getTime()+fileType); //新建一个文件
			System.out.println(fileType);
			try {
				file.getFileItem().write(file2);//将上传的文件写入新建的文件中
			} catch (Exception e) {
				e.printStackTrace();
			}
			System.out.println("姓名:"+name+"文件名:"+fileName+"本地存储路径为:"+path);
			return "redirect:upload_ok.jsp";
		} else{
			return "redirect:upload_error.jsp";
		}
	}

}