jar包:
commons-fileupload-1.1.jar
commons-io-1.3.2.jar
demo.html页面:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>File upload</title>
</head>
<body>
<form name="myform" action="fileupload" method="post" enctype="multipart/form-data">
名字:
<input type="text" name="name"><br>
File1:
<input type="file" name="myfile"><br>
<br>
<input type="submit" name="submit" value="Commit">
</form>
</body>
</html>
web.xml配置
<!-- 图片上传 -->
<servlet>
<servlet-name>Upload</servlet-name>
<servlet-class>com.rongda.photo.Upload</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Upload</servlet-name>
<url-pattern>/fileupload</url-pattern>
</servlet-mapping>
servlet代码:
package com.rongda.photo;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.rongda.vo.PhotoInfo;
@SuppressWarnings("serial")
public class Upload extends HttpServlet {
private String uploadPath = "E:\\upload"; // 上传文件的目录
@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
PhotoInfoDao photoInfoDao = new PhotoInfoDao();
// 获得当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, 0);
String currentTime = sdf.format(calendar.getTime());
//判断是否上传文件表单,也就是form中是否有enctype="multipart/form-data"项;必须post提交,get提交对内容长度有限制
if(ServletFileUpload.isMultipartContent(request)){
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(request);// 得到所有的文件
Iterator iter = items.iterator();
PhotoInfo photoInfo = new PhotoInfo();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()){
// 处理普通表单域
String name = item.getFieldName();
if("name".equals(name)){
String value = item.getString("GBK");
if(null != value && !"".equals(value)){
photoInfo.setName(value);
}
}
} else {
String fileName = item.getName();
if (fileName != null) {
File fullFile = new File(item.getName());
if(!fullFile.getName().endsWith(".jpg") && !fullFile.getName().endsWith(".gif")){
out.print("<script>alert('只能上传jpg或gif图片格式!');");
out.print("window.location.href='http://www.baidu.com/';</script>");
return;
}
File savedFile = null;
if(fullFile.getName().endsWith(".jpg")){
savedFile = new File(uploadPath, photoInfo.getPhone()+".jpg");
photoInfo.setPhotoName(photoInfo.getPhone()+".jpg");
}
if(fullFile.getName().endsWith(".gif")){
savedFile = new File(uploadPath, photoInfo.getPhone()+".gif");
photoInfo.setPhotoName(photoInfo.getPhone()+".gif");
}
item.write(savedFile);
}
}
}
photoInfoDao.save(photoInfo,currentTime);
out.print("<script>alert('上传成功!');");
out.print("window.location.href='http://www.baidu.com/';</script>");
return;
} catch (Exception e) {
// 可以跳转出错页面
e.printStackTrace();
}
}else{
throw new RuntimeException("请设置form表单的enctype属性");
}
}
public void init() throws ServletException {
File uploadFile = new File(uploadPath);
if (!uploadFile.exists()) {
uploadFile.mkdirs();
}
}
}