团队开发day03
在商品信息提交的时候需要提交商品的图片,这一部门是之前没有接触过的,所以从网上学习各种相关资源。
但是找了很久,都没有找到相关的,直到找到如下的代码,如下代码是从前端传过来图片后,servlet进行的一系列操作
进行了很久的研究,终于看懂的差不多了。接下来就是实践图片存入数据库了。
public class Inertm extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("方法开始执行"); resp.setContentType("application/json;charset=utf-8"); req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); String name=req.getParameter("user"); // 验证请求是否满足要求(post 请求 / enctype 是否以multipart打头 boolean isMultipart = ServletFileUpload.isMultipartContent(req); // 如果不满足要求就立即结束对该请求的处理 if (!isMultipart) { return; } try { // FileItem 是表单中的每一个元素的封装 // 创建一个 FileItem 的工厂类 FileItemFactory factory = new DiskFileItemFactory(); // 创建一个文件上传处理器(装饰设计模式) ServletFileUpload upload = new ServletFileUpload(factory); // 解析请求 List<FileItem> items = upload.parseRequest(req); System.out.println(items); for (FileItem item : items) { // 判断文件类型 if (item.isFormField()) { // 文本类型 String filename = item.getFieldName(); if (filename.equals("user")) { name = item.getString("UTF-8"); System.out.println(name); } } else { // 文件类型 // 获取文件后缀名 String imgtype = item.getName().substring(item.getName().lastIndexOf(".")); // 给文件重新命名防止重复 String imgName = UUID.randomUUID() + imgtype; System.out.println(); String path="D:\\JAVA\\img"; // 将上传的文件保存到服务器 item.write(new File(path, imgName)); // 把服务器中的路径添加到数据库中 String sqlPath=null; sqlPath = "upload/" + imgName; System.out.println("访问路径:" + sqlPath); // 将路径保存到数据库 User u=new User(); u.setName(name); u.setImgurl(sqlPath); Userdao dao=new Userdao(); boolean flag=dao.addUser(u); if(flag){ resp.getWriter().write("ok");; }else{ resp.getWriter().write("on");; } } } } catch (Exception e) { e.printStackTrace(); } } }