编写servlet类
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//导入的包围apache。commons中的
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* Servlet implementation class FileServlet
*/
@WebServlet("/FileServlet")
public class FileServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置编码格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//判断提交过来的form表单mime编码是否为multipart/form-data格式
boolean isMultiPart = ServletFileUpload.isMultipartContent(request);
if(isMultiPart){//mime编码为multipart/form-data
try {
//实例化一个ServletFileUpload对象(通过工厂创建)
FileItemFactory fileItemFactory = new DiskFileItemFactory();
ServletFileUpload fileUpload = new ServletFileUpload(fileItemFactory);
//解析form表单中的所有文件,返回一个List(存放FileItem元素)
List<FileItem> ItemList = fileUpload.parseRequest(request);
for (FileItem fileItem : ItemList) {//遍历
//判断表单类型
if(fileItem.isFormField()){//普通表单字段
//接受普通表单
//取出表单中name为bookname的字段
if("bookname".equals(fileItem.getName())){
String bookName = fileItem.getString("utf-8");
System.out.println(bookName);
}
//……
}else{//文件表单字段
String parentPath = getServletContext().getRealPath("images/");//文件存储根目录
String fileName = fileItem.getName();//文件名,一般使用时间戳
File file = new File(parentPath, fileName);
fileItem.write(file);//文件写入硬盘
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
实现图片上传只需增加判断文件结尾代码控制
String fileName = fileItem.getName();//文件名,一般使用时间戳
if(fileName.endsWith(".jpg") || fileName.endsWith(".jpeg") || fileName.endsWith(".png")){
String parentPath = getServletContext().getRealPath("images/");//文件存储根目录
File file = new File(parentPath, fileName);
fileItem.write(file);//文件写入硬盘
} else {
response.getWriter().print("<script>alert('图片格式错误,请选择.jpg .jpeg .png格式的图片');window.history.back(1);</script>");
}