精!HTML5调用手机拍照实现图片上传服务器,并将图片地址存进数据库(下)

这篇文章主要为大家详细介绍如何使用HTML5利用摄像头拍照实现上传功能。

上一篇只讲到前台操作,这篇专门涉及到Java后台处理,前台通过Ajax提交将Base64编码过的图片数据信息传到Java后台,然后Java这边进行接收处理,通过对图片数据信息进行Base64解码,之后使用流将图片数据信息上传至服务器进行保存,并且将图片的路径地址存进数据库。

大家可以点此链接查看前台本地压缩上传的处理:

精!HTML5调用手机拍照实现图片上传服务器,并将图片地址存进数据库(上)

1、前台js代码

$.ajax({ 

        async:false,//是否异步 

        cache:false,//是否使用缓存 

        type: "POST", 

        data:{fileData:fileData,licenceName:licenceName,cust_tax_code:cust_tax_code,phoneNum:phoneNum,state_id:state_id}, 

        dataType: "json", 

        timeout: 1000, 

        contentType : 'application/x-www-form-urlencoded; charset=utf-8', 

        url: $('#ctx').val()+"CustomerCheckServlet?action=uploadLicence", 

        success: function(result){ 

          console.log(result); 

          if(result == true){ 

            alert('Success Upload~~~'); 

          }else if(result == false){ 

            alert('Error Upload~~~'); 

          } 

        }, 

        error: function(){ 

          alert("Error Linking~"); 

        } 

      });

后台Java代码

/** 

   * 证件上传 

   * @param request 

   * @param response 

   * @throws IOException 

   */

  public void uploadLicence(HttpServletRequest request,HttpServletResponse response) throws IOException{ 

    log.info("=====================uploadLicence"); 

    df = new SimpleDateFormat("yyyy-MM-dd"); 

      

    String cust_tax_code = request.getParameter("cust_tax_code"); 

    String phoneNum = request.getParameter("phoneNum"); 

    String licenceName = request.getParameter("licenceName"); 

      

    String fileData = request.getParameter("fileData");//Base64编码过的图片数据信息,对字节数组字符串进行Base64解码 

    String imgPath = uploadFile(fileData,liceneName);//进行文件上传操作,上传到服务器中存放(这里是上传到服务器项目文件夹中存到) 

      

    boolean result = false;//最终上传成功与否的标志 

      

    custCheckInfo = new CustomerCheckInfo(); 

    custCheckInfo.setCust_tax_code(cust_tax_code); 

    custCheckInfo.setPhonenum(phoneNum); 

    custCheckInfo.setUpdate_time(df.format(new Date())); 

      

    boolean save_flag = customerService.saveRegistCertInfo(custCheckInfo);//保存路径 

      

    //判断数据库中的路径是否存在,并且文件夹中的文件是否存在(判断是否上传成功的标志) 

    boolean is_success = isSuccessUpload(licenceName, cust_tax_code, phoneNum); 

    if(save_flag && is_success){ 

      result = true; 

    } 

      

    //如果证件上传成功,则记录到记录表中 

    if(result){ 

      StateRecordInfo record = new StateRecordInfo(); 

      record.setCust_tax_code(cust_tax_code); 

      record.setPhonenum(phoneNum); 

      record.setState_id(state_id); 

        

      saveStateRecord(record);//执行状态保存操作 

    } 

      

    System.out.println("===result:"+result); 

    PrintWriter pw = response.getWriter(); 

    pw.print(result); 

    pw.close(); 

  }
/** 

   * 文件上传 

   * @param fileData 

   * @param fileName 

   * @return 

   */

  public String uploadFile(String fileData,String fileName){ 

    //在自己的项目中构造出一个用于存放用户照片的文件夹 

    String imgPath = this.getServletContext().getRealPath("/uploads/"); 

    //如果此文件夹不存在则创建一个 

    File f = new File(imgPath); 

    if(!f.exists()){ 

      f.mkdir(); 

    } 

    //拼接文件名称,不存在就创建 

    imgPath = imgPath + "/" + fileName + ".jpg"; 

    f = new File(imgPath); 

    if(!f.exists()){ 

      f.mkdir(); 

    } 

      

    log.info("====文件保存的位置:"+imgPath); 

      

    //使用BASE64对图片文件数据进行解码操作 

    BASE64Decoder decoder = new BASE64Decoder(); 

    try { 

      //通过Base64解密,将图片数据解密成字节数组 

      byte[] bytes = decoder.decodeBuffer(fileData); 

      //构造字节数组输入流 

      ByteArrayInputStream bais = new ByteArrayInputStream(bytes); 

      //读取输入流的数据 

      BufferedImage bi = ImageIO.read(bais); 

      //将数据信息写进图片文件中 

      ImageIO.write(bi, "jpg", f);// 不管输出什么格式图片,此处不需改动 

      bais.close(); 

    } catch (IOException e) { 

      log.error("e:{}",e); 

    } 

    return imgPath; 

  }
/** 

   * 判断是否成功上传 

   * @return 

   */

  public boolean isSuccessUpload(String licenceName,String cust_tax_code,String phonenum){ 

    boolean flag = false; 

    String licencePath = "";//证件图片上传成功之后保存的路径 

    custCheckInfo = customerService.getCustomerCheckInfo(cust_tax_code, phonenum); 

    licencePath = custCheckInfo.getTax_regist_cert(); 

    

    //判断证件路径不为空并且在上传存放的文件夹中存在,就表明以上传成功 

    File f = new File(licencePath); 

    if(licencePath.length() >0 && f.exists()){ 

      flag = true; 

    } 

    return flag; 

  }

以上就HTML5调用手机拍照实现图片上传服务器,并将图片地址存进数据库的详细内容,更多请关注125网页设计的其它相关文章!

125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/10955.html

(0)
江山如画的头像江山如画管理团队
上一篇 2022年8月11日 上午9:48
下一篇 2022年8月12日 上午10:33

99%的人还看了以下文章

  • 第4课:标识符和关键字

     1.标识符 在程序中使用的变量名、函数名、标号等统称为标识符。除库函数的函数名由系统定义外,其余都由用户自定义。C 规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。 以下标识符是合法的:        a, x,  x3, BOOK_1, sum5 以下标识符是非法的:     3a …

    2020年4月5日
    6.2K0
  • JSP制作后台登录页面:login.jsp

    设计数据库employee,manager表,字段:user_id (主键,自增1,int类型),user_name, password 创建数据源:employee_dsn 制作登录页面login.jsp 登录页面 login.jsp代码: <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transition…

    2020年12月6日
    5.8K0
  • 输入python显示不是内部命令的原因及解决方法

    问题原因:没有将python的安装路径添加到环境变量中。 解决方法: 首先在桌面上右键点击“此电脑”,选择“属性”,弹出系统界面选择“高级系统设置”,进入系统属性界面后在“高级”选项中选中“环境变量”。 然后在“系统变量”中找到变量Path,双击Path变量进入编辑界面。 接着在编辑环境变量对话框中点击“新建”,添加Python的安装路径,之后一直点确定即可…

    2023年5月18日 编程开发
    5.0K1
  • 纯JSP实现计算圆的面积和周长

    一个jsp页面由元素和模板数据组成.元素是必须由jsp容器处理的部分.而模板数据是jsp容器不处理的部分,如jsp中的HTML内容 元素有三种类型: 脚本元素,指令元素, 动作元素 脚本元素:包含三个部分:声明,脚本段,表达式 声明:用于声明在其它脚本元素中可以使用的变量和方法 脚本段:是一段java代码 表达式:java语言中完整的表达式 声明 以<…

    2020年4月3日
    19.2K0
  • 通用数据库操作类及员工信息查询实例

    package com.common; import java.sql.*; public class DataBaseConn { public Connection conn = null; public void createConn(){ String url = “jdbc:mysql://localhost:3306/employeeDb”; S…

    2019年11月27日
    10.1K0
  • 简!python中安装pip的方法

     pip的安装 打开cmd,输入以下命令安装pip: python -m ensurepip –default-pip 出现如下图所示,代表pip安装成功: 查看pip版本 pip –version 更新pip版本 python -m pip install –upgrade pip 安装库 例如安装pyyaml库,打开cmd输入以下命令: pip i…

    2023年5月18日
    10.0K0

发表回复

登录后才能评论