servlet上传图片

1.jar包

2. 前台

<form action="${pageContext.request.contextPath}/MenuAddServlet?method=add" method="post" name="form1"
                        onSubmit="return verifyInfo()" enctype="multipart/form-data">

                          <tr>
                                <td  height="25" align="right" width="20%"><span>上传图片:</span></td>
                                <td  height="25" width="80%"><input
                                    type="file" name="img" size="50">${msg}</td>
                            </tr>
                            <tr>
                                <td  height="25" align="center" colspan="2"><input
                                    type="submit" value="添加"></td>
                            </tr>

3.servlet

protected void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        //文件上传的三部曲
        //创建工厂
        DiskFileItemFactory factoy=new DiskFileItemFactory();
        //创建解析器
        ServletFileUpload sfu=new ServletFileUpload(factoy);
        //设置上传文件的大小
        sfu.setFileSizeMax(1024*1024);
        //解析request
        try {
            List<FileItem> list=sfu.parseRequest(request);
            String name=list.get(0).getString("utf-8");
            String burden=list.get(1).getString("utf-8");
            String price=list.get(2).getString("utf-8");
            String price1=list.get(3).getString("utf-8");
            String brief=list.get(4).getString("utf-8");
            String typeid=list.get(5).getString("utf-8");
            System.out.println(list.get(6));
            /**
             * 上传图片
             */
            //设置图片保存的目录
            String path="D:/MyPicture/img/";
            //得到文件名称
            String fileName="m_"+UUID.randomUUID()+"_"+list.get(6).getName();
            System.out.println("fileName:"+fileName);
            //校验图片的格式
            if(!fileName.toLowerCase().endsWith(".gif")){
                System.out.println("图片格式不是gif格式");
                request.setAttribute("msg", "你的图片格式不是gif格式");
                request.getRequestDispatcher("/admin/menus_add.jsp").forward(request, response);
                return;
            }
            //使用目录和文件名称创建目标文件
            File f=new File(path,fileName);
            //保存文件
            list.get(6).write(f);
            //校验图片的尺寸
            ImageIcon imageIcon = new ImageIcon(f.getAbsolutePath());
            Image image=imageIcon.getImage();
            if(image.getWidth(null)>200 || image.getHeight(null)>200){
                f.delete();
                request.setAttribute("msg", "图片的尺寸太大");
                request.getRequestDispatcher("/admin/menus_add.jsp").forward(request, response);

            }
            //设置为menu的属性
            Menus menu = new Menus(name, typeid, burden, brief, price, price1, "/img/"+fileName);
            System.out.println("fileName:"+fileName);
            System.out.println(path);
            System.out.println(menu);
            if(menusService.add(menu)>0) {
                out.print("<script>"
                        + "alert('菜单添加成功!');"
                        + "window.parent.location.href='"
                        + request.getContextPath()+"/admin/main.jsp'"
                        + "</script>");
            }else {
                out.print("<script>"
                        + "alert('菜单添加失败!');"
                        + "window.parent.location.href='"
                        + request.getContextPath()+"/admin/menus_add.jsp'"
                        + "</script>");
            }

        } catch (FileUploadException e) {
            if(e instanceof FileUploadBase.FileSizeLimitExceededException){

                System.out.println("你上传的文件大于1M");
                request.setAttribute("msg", "你的图片大于1M");
                request.getRequestDispatcher("/admin/menus_add.jsp").forward(request, response);
                return;
            }
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

4.注意:在D盘创建目录 D:/MyPicture/img/

在tomcat 的service.xml里创建虚拟路径对应磁盘物理路径

<Context docBase="D:\MyPicture" path="/pic" reloadable="true"/> 

5.遍历显示(需要查询数据库,省略)

猜你喜欢

转载自blog.csdn.net/Sir_He/article/details/82597441
今日推荐