You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
text/src/web/servlet/file/UploadImageServlet.java

292 lines
14 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package web.servlet.file;
import domain.Admin;
import domain.Photo;
import domain.Student;
import domain.Teacher;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import service.PhotoService;
import service.impl.PhotoServiceImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
@WebServlet("/uploadImageServlet")
public class UploadImageServlet extends HttpServlet {
// 处理POST请求
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取当前会话
HttpSession session = request.getSession();
// 获取当前会话中的学生对象
Student student = (Student) session.getAttribute("student");
// 获取当前会话中的教师对象
Teacher teacher = (Teacher) session.getAttribute("teacher");
// 获取当前会话中的管理员对象
Admin admin = (Admin) session.getAttribute("admin");
// 定义一个字符串变量用于存储用户ID
String id = "";
// 如果当前会话中有学生对象
if (student != null) {
// 将学生ID赋值给id变量
id = student.getS_id();
}
request.setAttribute("message", "");
request.setAttribute("path", "");
String filename = null;
String newFileName = null;
// 设置上传图片的保存路径
String savePath = this.getServletContext().getRealPath("/photos");
File file = new File(savePath);
// 判断上传文件的保存目录是否存在
if (!file.exists() && !file.isDirectory()) {
System.out.println(savePath + "目录不存在,需要创建");
// 创建目录
file.mkdir();
}
DiskFileItemFactory factory = new DiskFileItemFactory();
// 2、创建一个文件上传解析器
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
// 3、判断提交上来的数据是否是上传表单的数据
if (!ServletFileUpload.isMultipartContent(request)) {
// 按照传统方式获取数据
return;
}
try {
List<FileItem> list = upload.parseRequest(request);
System.out.println(list.toString());// 文件的路径 以及保存的路径
for (FileItem item : list) {
filename = item.getName();// 获得一个项的文件名称
try {
newFileName = id + filename.substring(filename.lastIndexOf("."));
filename = id + filename.substring(filename.lastIndexOf("."));
} catch (Exception e) {
e.printStackTrace();
}
if (filename == null || filename.trim().equals("")) {// 如果為空則跳過
continue;
}
// 報錯 需要過濾文件名稱 java.io.FileNotFoundException:
// G:\测试02\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\FaceUp\WEB-INF\images\C:\Users\Ray\Pictures\2.jpeg
// (文件名、目录名或卷标语法不正确。)
filename = filename.substring(filename.lastIndexOf("\\") + 1);
// System.out.print(filename);
// 判断文件名后缀是否为JPG、JPEG、gif、GIF、jpg、jpeg
if (filename.substring(filename.lastIndexOf(".") + 1).equals("JPG")
|| filename.substring(filename.lastIndexOf(".") + 1).equals("JPEG")
|| filename.substring(filename.lastIndexOf(".") + 1).equals("gif")
|| filename.substring(filename.lastIndexOf(".") + 1).equals("GIF")
|| filename.substring(filename.lastIndexOf(".") + 1).equals("jpg")
|| filename.substring(filename.lastIndexOf(".") + 1).equals("jpeg")) {
InputStream in = item.getInputStream();// 獲得上傳的輸入流
FileOutputStream out = new FileOutputStream(savePath + "\\" + filename);// 指定web-inf目錄下的images文件
request.setAttribute("path", "photos"+"\\" + filename);
int len = 0;
byte buffer[] = new byte[1024];
while ((len = in.read(buffer)) > 0)// 每次讀取
{
out.write(buffer, 0, len);
}
in.close();
out.close();
item.delete();
} else { //必须是图片才能上传否则失败
request.setAttribute("update_msg", "上传失败只能上传类型为jpg或GIF的图像文件"+String.format("%tT",new Date()));
// request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
// 转发到studentAddPhoto.jsp页面
request.getRequestDispatcher("/WEB-INF/student/studentAddPhoto.jsp").forward(request, response);
return;
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
// 创建Photo对象
Photo photo = new Photo();
// 设置photoId
photo.setPhotoId(id);
// 设置photoName
photo.setPhotoName(newFileName);
// 创建PhotoService对象
PhotoService service = new PhotoServiceImpl();
Photo photo1= service.findPhotoByPhotoId(id);
if (photo1==null) {
service.addPhoto(photo);
}else {
service.updatePhoto(photo);
}
request.setAttribute("update_msg", "上传成功!"+String.format("%tT",new Date()));
// request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
request.getRequestDispatcher("/WEB-INF/student/studentAddPhoto.jsp").forward(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/student/studentAddPhoto.jsp").forward(request, response);
}
}
//package web.servlet.file;
//
//import domain.Admin;
//import domain.Photo;
//import domain.Student;
//import domain.Teacher;
//import org.apache.commons.fileupload.FileItem;
//import org.apache.commons.fileupload.FileUploadException;
//import org.apache.commons.fileupload.disk.DiskFileItemFactory;
//import org.apache.commons.fileupload.servlet.ServletFileUpload;
//import service.PhotoService;
//import service.impl.PhotoServiceImpl;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.File;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.io.InputStream;
//import java.util.Date;
//import java.util.List;
//
//@WebServlet("/uploadImageServlet")
//public class UploadImageServlet extends HttpServlet {
// // 处理POST请求
// protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//
// // 获取当前会话
// HttpSession session = request.getSession();
// // 获取当前会话中的学生对象
// Student student = (Student) session.getAttribute("student");
// // 获取当前会话中的教师对象
// Teacher teacher = (Teacher) session.getAttribute("teacher");
// // 获取当前会话中的管理员对象
// Admin admin = (Admin) session.getAttribute("admin");
// // 定义一个字符串变量用于存储用户ID
// String id = "";
// // 如果当前会话中有学生对象
// if (student != null) {
// // 将学生ID赋值给id变量
// id = student.getS_id();
// }
//
// request.setAttribute("message", "");
// request.setAttribute("path", "");
// String filename = null;
// String newFileName = null;
// // 设置上传图片的保存路径-
// String savePath = this.getServletContext().getRealPath("/photos");
// File file = new File(savePath);
// // 判断上传文件的保存目录是否存在-
// if (!file.exists() && !file.isDirectory()) {
// System.out.println(savePath + "目录不存在,需要创建");
// // 创建目录
// file.mkdir();
// }
// DiskFileItemFactory factory = new DiskFileItemFactory();
// // 2、创建一个文件上传解析器-
// ServletFileUpload upload = new ServletFileUpload(factory);
// upload.setHeaderEncoding("UTF-8");
// // 3、判断提交上来的数据是否是上传表单的数据-
// if (!ServletFileUpload.isMultipartContent(request)) {
// // 按照传统方式获取数据-
// return;
// }
// try {
// List<FileItem> list = upload.parseRequest(request);
// System.out.println(list.toString());// 文件的路径 以及保存的路径-
// for (FileItem item : list) {
// filename = item.getName();// 获得一个项的文件名称-
// try {
// newFileName = id + filename.substring(filename.lastIndexOf("."));
// filename = id + filename.substring(filename.lastIndexOf("."));
// } catch (Exception e) {
// e.printStackTrace();
// }
// if (filename == null || filename.trim().equals("")) {// 如果為空則跳過
// continue;
// }
// // 報錯 需要過濾文件名稱 java.io.FileNotFoundException:
// // G:\测试02\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\FaceUp\WEB-INF\images\C:\Users\Ray\Pictures\2.jpeg
// // (文件名、目录名或卷标语法不正确。)
//
// filename = filename.substring(filename.lastIndexOf("\\") + 1);
//// System.out.print(filename);
// // 判断文件名后缀是否为JPG、JPEG、gif、GIF、jpg、jpeg
// if (filename.substring(filename.lastIndexOf(".") + 1).equals("JPG")
// || filename.substring(filename.lastIndexOf(".") + 1).equals("JPEG")
// || filename.substring(filename.lastIndexOf(".") + 1).equals("gif")
// || filename.substring(filename.lastIndexOf(".") + 1).equals("GIF")
// || filename.substring(filename.lastIndexOf(".") + 1).equals("jpg")
// || filename.substring(filename.lastIndexOf(".") + 1).equals("jpeg")) {
// InputStream in = item.getInputStream();// 獲得上傳的輸入流
// FileOutputStream out = new FileOutputStream(savePath + "\\" + filename);// 指定web-inf目錄下的images文件
// request.setAttribute("path", "photos"+"\\" + filename);
//
// int len = 0;
// byte buffer[] = new byte[1024];
// while ((len = in.read(buffer)) > 0)// 每次讀取
// {
// out.write(buffer, 0, len);
// }
// in.close();
// out.close();
// item.delete();
// } else { //必须是图片才能上传否则失败
// request.setAttribute("update_msg", "上传失败只能上传类型为jpg或GIF的图像文件"+String.format("%tT",new Date()));
//// request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
// // 转发到studentAddPhoto.jsp页面
// request.getRequestDispatcher("/WEB-INF/student/studentAddPhoto.jsp").forward(request, response);
// return;
// }
// }
// } catch (FileUploadException e) {
// e.printStackTrace();
// }
//
// // 创建Photo对象
// Photo photo = new Photo();
// // 设置photoId
// photo.setPhotoId(id);
// // 设置photoName
// photo.setPhotoName(newFileName);
// // 创建PhotoService对象
// PhotoService service = new PhotoServiceImpl();
//
//
// Photo photo1= service.findPhotoByPhotoId(id);
// if (photo1==null) {
// service.addPhoto(photo);
// }else {
// service.updatePhoto(photo);
// }
// request.setAttribute("update_msg", "上传成功!"+String.format("%tT",new Date()));
//// request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);
// request.getRequestDispatcher("/WEB-INF/student/studentAddPhoto.jsp").forward(request, response);
// }
//
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request.getRequestDispatcher("/WEB-INF/student/studentAddPhoto.jsp").forward(request, response);
// }
//}