Java 图片保存到数据库

开发工具与关键技术:MyEclipse 10/Java

作者:吴永旗

撰写时间: 2019年06月17日

本实例要实现的是上传图片同时带有字段保存到数据库,首先我们需要引入commons-io-2.5.jar和commons-fileupload-1.3.2.jar包,其次最为重要的是中jsp页面的表单中from务必要有这两个属性为method="post" enctype="multipart/form-data"否则数据提交失败,而servlet层不能通过request方式请求获取得到from表单的值,而是通过parseRequest()方法获取集合,然后for循环遍历,通过getFieldName()获取字段,通过if()进行名字一一匹配,从而代替request.getParameter的方法请求。

(1)新建一个index.jsp页,from表单要有method="post" enctype="multipart/form-data"属性,关键代码如下:

(2)新建一个upload.java,用于编写selvert层代码,关键代码如下:

D  int sizeThreshold=1024*1024*1; //1m

            int fileSizeMax=1024*1024*5;//5m

            int sizeMax=1024*1024*8; //8m

            DiskFileItemFactory factory=new DiskFileItemFactory();

            // 设置内存临界值 - 超过后将产生临时图片并存储于临时目录中 10M

            factory.setSizeThreshold(sizeThreshold);

            //配置临时目录

    factory.setRepository(new File(System.getProperty("java.io.tmpdir")));

            ServletFileUpload upload=new ServletFileUpload(factory);

            //设置编码

            upload.setHeaderEncoding("utf-8");

            //设置上传图片的最大大小

            upload.setFileSizeMax(fileSizeMax);

            //设置请求的最大大小

            upload.setSizeMax(sizeMax);

            // 构造临时路径来存储上传的图片

            // 这个路径相对当前应用的目录

  String uploadPath = request.getServletContext().getRealPath("./") + File.separator + "upload";

            // 如果目录不存在则创建

            File uploadDir = new File(uploadPath);

            if (!uploadDir.exists()) {

                uploadDir.mkdir();

            }

            try {

                 //获取集合

                List formItems = upload.parseRequest(request);

                Particulars  par=new Particulars();

                int name=0;

                for (FileItem item : formItems) {

                   //isFormField 表单元素

                if (!item.isFormField()) {

                 String fileName =System.currentTimeMillis()+"__"+ new File(item.getName()).getName();

                  String filePath = uploadPath + File.separator + fileName;

                 File storeFile = new File(filePath);

                        item.write(storeFile); // 保存图片到硬盘

                        par.setPicture(fileName.trim());//图片路径

                   }else

                   {

                       //获取其他字段

                String fieldName  = item.getFieldName();

                        //通过流 用来读取表单元素里的内容。

               java.io.BufferedReader br = new BufferedReader(new InputStreamReader(item.getInputStream(),"UTF-8"));

            //如果还有除文件域以外的其他表单元素 就用 if()进行名字一一匹配。此处就是request.getParameter的替换方法

                        if(fieldName.equals("SmallclassID")){

                             String SmallclassID =  br.readLine();

                         par.setSmallclassID(Integer.parseInt(SmallclassID));

                        }

                        if(fieldName.equals("ParticularsNumber")){

                             String ParticularsNumber =  br.readLine();

                             par.setParticularsNumber(ParticularsNumber);

                        }

                        if(fieldName.equals("ParticularsName")){

                             String ParticularsName =  br.readLine();

                             name=particul.count(ParticularsName);

                             par.setParticularsName(ParticularsName);

                        }

                        if(fieldName.equals("Price")){

                             String Price =  br.readLine();

                             par.setPrice(Price);

                        }

                        if(fieldName.equals("BigPrice")){

                             String BigPrice =  br.readLine();

                             par.setBigPrice(BigPrice);

                        }

                        if(fieldName.equals("SmallPrice")){

                             String SmallPrice =  br.readLine();

                             par.setSmallPrice(SmallPrice);

                        }

                        if(fieldName.equals("Member")){

                             String Member =  br.readLine();

                             par.setMember(Member);

                        }

                        if(fieldName.equals("Discount")){

                             String Discount =  br.readLine();

                             par.setDiscount(Discount);

                        }

                        if(fieldName.equals("Uniter")){

                             String Uniter =  br.readLine();

                             par.setUniter(Uniter);

                        }

                   }

                }

                if (name==0) {

                   boolean scuess=particul.insert(par);

                   if (scuess) {

                    response.getWriter().write(Boolean.toString(scuess));

                   }

                }else {

                   response.getWriter().write("exit");

                }

            } catch (FileUploadException e) {

                e.printStackTrace();

            } catch (Exception e) {

                e.printStackTrace();

            }

    }

 

你可能感兴趣的:(java)