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

133 lines
6.0 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 {
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");
String id = "";
if (student != null) {
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);
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);
request.getRequestDispatcher("/WEB-INF/student/studentAddPhoto.jsp").forward(request, response);
return;
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
Photo photo = new Photo();
photo.setPhotoId(id);
photo.setPhotoName(newFileName);
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);
}
}