package com.servlet.goods;
import com.alibaba.fastjson.JSON;
import com.dao.GoodsDao;
import com.dao.impl.GoodsDaoImpl;
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;
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.Part;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@WebServlet("/layuimini/shangcheng/TuiPian")
public class TuiPian extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPut(req, resp);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//解决中文乱码
request.setCharacterEncoding("UTF-8");
//1. 先判断上传的的数据是否多段数据(只有是多段的数据,才是文件上传的)
if (ServletFileUpload.isMultipartContent(request)) {
//创建 FileItemFactory 工厂实现类
FileItemFactory fileItemFactory = new DiskFileItemFactory();
// 2. 创建用于解析上传数据的工具类
ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
try {
// 3. 解析 上传的数据,得到每一个表单项 FiltItem
List<FileItem> list = servletFileUpload.parseRequest(request);
//循环判断,每一个表单项,是普通类型,还是上传的文件
for (FileItem fileItem : list) {
// 是普通表单项
if (fileItem.isFormField()) {
String fieldName = fileItem.getFieldName();
String value = fileItem.getString("UTF-8");
System.out.println("表单项的name属性值 = " + fieldName);
System.out.println("表单项的value属性值 = " + value);
} else {
//是上传的文件
System.out.println("是上传的文件");
String name = fileItem.getFieldName();
String fieldName = fileItem.getName();
System.out.println("表单项的name属性值 = " + name);
System.out.println("上传的文件名 = " + fieldName);
File realPath = new File("web/images");
if (!realPath.exists()) {
realPath.mkdir();
}
String filename = fileItem.getName();
filename = filename.substring(0, filename.indexOf(".")) + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + filename.substring(filename.indexOf("."), filename.length());
String fi = "/file/" + filename;
//对用户数据库进行更改
GoodsDao goodsDao = new GoodsDaoImpl();
int i = goodsDao.updateG(fi);
if (i > 0) {
// 将数据写到指定的位置
// fileItem.write(new File(filename));
HashMap<String, Object> map = new HashMap<>();
Map<String, String> map1 = new HashMap<>();
map1.put("src", fi);
map.put("code", 0);
map.put("msg", "上传成功");
map.put("data", map1);
response.getWriter().write(JSON.toJSONString(map));
} else {
HashMap<String, Object> map = new HashMap<>();
map.put("code", 1);
map.put("msg", "上传失败");
map.put("data", "");
response.getWriter().write(JSON.toJSONString(map));
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}