<!-- 文件上传 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property>
<property name="maxUploadSize" value="10485760"></property>
<property name="maxInMemorySize" value="40960"></property>
</bean>
2、/Servers/Tomcat v7.0 Server at localhost-config/server.xml(这个配置文件是在http服务器上的,这个可以按照需要配置,主要是配置一个映射的地址)
<Context docBase="D:\picture" path="/pic_coupon" reloadable="true"/>
docBase是服务器中保存文件的物理地址,path是网络的映射地址。
3、jar包
文件上传
com.springsource.org.apache.commons.fileupload-1.2.0.jar
com.springsource.org.apache.commons.io-1.4.0.jar
4、index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件上传</title>
<script type="text/javascript">
function doUpload(e){
var f = document.getElementById("file").files;
//遍历出选择的所有文件名称
for(var i = 0; i < f.length; i++){
//alert(f[i].name);
}
form.submit();
}
</script>
</head>
<body>
<form name="form" action="${pageContext.request.contextPath}/upload/upload.do" method="post" enctype="multipart/form-data">
请选择要上传的文件:<br>
<input type="file" id="file" name="file" multiple="multiple" /><br>
(最大10M)<br>
<input type="text" name="test" value="test"><br>
<!--
<input type="button" οnclick="doUpload(this)" value='提交'>
-->
<input type="submit" value="提交"> <input type="reset" value="重设">
</form>
</body>
</html>
5、控制层文件UploadController.java
package com.******.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.ResponseBody;
import com.shareboxes.util.FileUpload;
@Controller
@RequestMapping("/upload")
public class UploadController {
@RequestMapping(value = "upload.do", produces = "text/json;charset=UTF-8", method = { RequestMethod.GET, RequestMethod.POST })
public @ResponseBody String upload(String test, HttpServletRequest request, HttpServletResponse response){
System.out.println("########################:"+test);
return FileUpload.userCouponUpload(request);
}
}
6、上传工具java
FileUpload.java
import java.io.File;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
/**
* @ClassName: FileUpload
* @Description:处理上传图片的工具类
* @author lucc
* @date 2015年9月28日
* @version 1.0
*/
public class FileUpload {
private static String mapper_url = "http://localhost:8080/pic_coupon/";
private static String physics_url = "D:\\picture\\";
@SuppressWarnings("null")
public static String userCouponUpload(HttpServletRequest request) {
String web_url ="";
try {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
// 判断 request 是否有文件上传,即多部分请求
if (multipartResolver.isMultipart(request)) {
// 转换成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 取得request中的所有文件名
List<MultipartFile> fileList = multiRequest.getFiles("file");
System.out.println("当前上传的文件个数为:" + fileList.size());
for (MultipartFile file : fileList) {
// 记录上传过程起始时的时间,用来计算上传时间
int pre = (int) System.currentTimeMillis();
// 取得上传文件
//MultipartFile file = multiRequest.getFile(iter.next());
if (file != null || !file.isEmpty()) {
// 取得当前上传文件的文件名称
String myFileName = file.getOriginalFilename();
System.out.println("当前上传文件的文件名称------>"+myFileName);
// 如果名称不为"",说明该文件存在,否则说明该文件不存在
if (myFileName.trim() != "") {
System.out.println(myFileName);
// 定义上传路径(图片存储的物理地址)
//当前时间的毫秒
long time = DateUtil.getStatic();
String localfileName = physics_url+time+myFileName;
System.out.println("图片存储的物理地址------>"+localfileName);
File localFile = new File(localfileName);
//判断该文件是否存在
if(!localFile.exists()){
localFile.mkdirs();
}
//上传图片
file.transferTo(localFile);
web_url = mapper_url+time+myFileName;
System.out.println("网络地址--->" + web_url);
}
}
// 记录上传该文件后的时间
int finaltime = (int) System.currentTimeMillis();
System.out.println("图片上传时间--->"+ (finaltime - pre) + "ms");
}
}
} catch (Exception e) {
e.printStackTrace();
return "error";
}
return "success";
}
}
辅助工具类
DateUtil.java
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
/**
* @ClassName: dateUtil
* @Description:日期处理工具类
* @author lucc
* @date 2015年11月13日
* @vesion 1.0
*/
public class DateUtil {
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
/**
*
* @Title: dateToString
* @Description: TODO(日期转字符串)
* @param date
* @return
* @return String
*/
public static String dateToString(Date date) {
return sdf.format(date);
}
/**
*
* @Title: stringToDate
* @Description: TODO(字符串转日期)
* @param str
* @return
* @return Date
*/
public static Date stringToDate(String str) {
Date date = null;
try {
date = sdf.parse(str);
return date;
} catch (ParseException e) {
e.printStackTrace();
return date;
}
}
/**
*
* @Title: getStatic
* @Description: TODO(得到当前时间的毫秒数)
* @return
* @return long
*/
public static long getStatic() {
Date date = new Date();
return date.getTime();
}
/**
*
* @Title: getTime
* @Description: TODO(返回当前时间)
* @return
* @return String
*/
public static String getTime() {
Date date = new Date();
return dateToString(date);
}
/**
*
* @Title: getDateTime
* @Description: TODO(返回当前只有年月日的时间)
* @return
* @return String
*/
public static String getDateTime() {
Date date = new Date();
return sdfDate.format(date);
}
/**
*
* @Title: getNouseDate
* @Description: TODO(返回当前时间)
* @return
* @return Timestamp
*/
public static Timestamp getStringToTimestamp(String date) {
//Timestamp nousedate = new Timestamp();
return Timestamp.valueOf(date);
}
/**
*
* @Title: getNouseDate
* @Description: TODO(返回当前时间)
* @return
* @return Timestamp
*/
public static Timestamp getNouseDate() {
Date date = new Date();
Timestamp nousedate = new Timestamp(date.getTime());
return nousedate;
}
/**
* 计算两个日期的时间差
* @param formatTime1
* @param formatTime2
* @return
*/
public static String getTimeDifference(Timestamp formatTime1, Timestamp formatTime2) {
SimpleDateFormat timeformat = new SimpleDateFormat("yyyy-MM-dd,HH:mm:ss");
long t1 = 0L;
long t2 = 0L;
try {
t1 = timeformat.parse(getTimeStampNumberFormat(formatTime1)).getTime();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
t2 = timeformat.parse(getTimeStampNumberFormat(formatTime2)).getTime();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//因为t1-t2得到的是毫秒级,所以要初3600000得出小时.算天数或秒同理
int hours=(int) ((t1 - t2)/3600000);
int minutes=(int) (((t1 - t2)/1000-hours*3600)/60);
int second=(int) ((t1 - t2)/1000-hours*3600-minutes*60);
return ""+hours+"小时"+minutes+"分"+second+"秒";
}
/**
* 格式化时间
* Locale是设置语言敏感操作
* @param formatTime
* @return
*/
public static String getTimeStampNumberFormat(Timestamp formatTime) {
SimpleDateFormat m_format = new SimpleDateFormat("yyyy-MM-dd,HH:mm:ss", new Locale("zh", "cn"));
return m_format.format(formatTime);
}
/**
*
* @Title: getMonth
* @Description: TODO(获取月份)
* @param calendar
* @return
* @return int
*/
public static int getMonth(Calendar calendar) {
if (calendar != null) {
return calendar.get(Calendar.MONTH);
} else {
return Calendar.getInstance().get(Calendar.MONTH);
}
}
/**
*
* @Title: getYear
* @Description: TODO(获取日份)
* @param calendar
* @return
* @return int
*/
public static int getDate(Calendar calendar) {
if (calendar != null) {
return calendar.get(Calendar.DATE);
} else {
return Calendar.getInstance().get(Calendar.DATE);
}
}
/**
*
* @Title: getYear
* @Description: TODO(获取年份)
* @param calendar
* @return
* @return int
*/
public static int getYear(Calendar calendar) {
if (calendar != null) {
return calendar.get(Calendar.YEAR);
} else {
return Calendar.getInstance().get(Calendar.YEAR);
}
}
/**
*
* @Title: DateToCalendar
* @Description: TODO(Date类型转换到Calendar类型)
* @param date
* @return
* @return Calendar
*/
public static Calendar DateToCalendar(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar;
}
/**
*
* @Title: CalendarToDate
* @Description: TODO(Calendar类型转换到Date类型)
* @param calendar
* @return
* @return Date
*/
public static Date CalendarToDate(Calendar calendar) {
return calendar.getTime();
}
}