


This article mainly introduces HTML5+Canvas to call the mobile phone camera function to upload pictures in detail. It has a certain reference value. Interested friends can refer to it.
The previous article only talked about Front-end operation, this article specifically involves Java background processing. The front-end submits the Base64-encoded image data information to the Java background through Ajax, and then receives and processes the image data information on the Java side, Base64 decodes the image data information, and then uses the stream to The image data information is uploaded to the server for storage, and the path address of the image is stored in the database.
You can click this link to view the processing of local compression upload at the front desk:
Okay, no more nonsense, just post the code.
1. Front-end js code:
$.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~"); } });
2. Back-end Java code
/** * 证件上传 * @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; }
Okay, it’s all over here. This is the entire implementation process of HTML5+jQuery+Canvas calling the mobile phone camera function to upload pictures. It feels like My thinking is a bit confusing, well, let’s make progress slowly!
The above is the detailed content of HTML5+Canvas calls the camera function of the mobile phone to implement the image upload function (detailed explanation of pictures and texts in the next part). For more information, please follow other related articles on the PHP Chinese website!

html5的div元素默认一行不可以放两个。div是一个块级元素,一个元素会独占一行,两个div默认无法在同一行显示;但可以通过给div元素添加“display:inline;”样式,将其转为行内元素,就可以实现多个div在同一行显示了。

html5中列表和表格的区别:1、表格主要是用于显示数据的,而列表主要是用于给数据进行布局;2、表格是使用table标签配合tr、td、th等标签进行定义的,列表是利用li标签配合ol、ul等标签进行定义的。

固定方法:1、使用header标签定义文档头部内容,并添加“position:fixed;top:0;”样式让其固定不动;2、使用footer标签定义尾部内容,并添加“position: fixed;bottom: 0;”样式让其固定不动。

HTML5中画布标签是“<canvas>”。canvas标签用于图形的绘制,它只是一个矩形的图形容器,绘制图形必须通过脚本(通常是JavaScript)来完成;开发者可利用多种js方法来在canvas中绘制路径、盒、圆、字符以及添加图像等。

html5中不支持的标签有:1、acronym,用于定义首字母缩写,可用abbr替代;2、basefont,可利用css样式替代;3、applet,可用object替代;4、dir,定义目录列表,可用ul替代;5、big,定义大号文本等等。

html5废弃了dir列表标签。dir标签被用来定义目录列表,一般和li标签配合使用,在dir标签对中通过li标签来设置列表项,语法“<dir><li>列表项值</li>...</dir>”。HTML5已经不支持dir,可使用ul标签取代。

html5是指超文本标记语言(HTML)的第五次重大修改,即第5代HTML。HTML5是Web中核心语言HTML的规范,用户使用任何手段进行网页浏览时看到的内容原本都是HTML格式的,在浏览器中通过一些技术处理将其转换成为了可识别的信息。HTML5由不同的技术构成,其在互联网中得到了非常广泛的应用,提供更多增强网络应用的标准机。

3种取消方法:1、给td元素添加“border:none”无边框样式即可,语法“td{border:none}”。2、给td元素添加“border:0”样式,语法“td{border:0;}”,将td边框的宽度设置为0即可。3、给td元素添加“border:transparent”样式,语法“td{border:transparent;}”,将td边框的颜色设置为透明即可。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

EditPlus Chinese cracked version
Small size, syntax highlighting, does not support code prompt function

Dreamweaver Mac version
Visual web development tools

Notepad++7.3.1
Easy-to-use and free code editor

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft
