ase64文件通过Ajax传值时出现的乱码问题解决,以及实现html5调用windows摄像头保存在本地

本文详细介绍了如何解决通过Ajax传递Base64字符串时遇到的乱码问题,并提供了解决方案。同时,还介绍了如何使用HTML5调用Windows摄像头并将拍摄的照片保存到本地的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于import sun.misc.BASE64Decoder; base64文件通过Ajax传值时出现的乱码问题解决,以及实现html5调用windows摄像头保存在本地

乱码问题

如果你只是出现了ajax替换了base64值问题的话,如果使用的是sun公司的jar,代码如下:
sj是我的传到后台的base64的字符串
//替换所有的%2B为+
sj=sj.replaceAll("%2B","+");
//替换所有的%2F为/
sj=sj.replaceAll("%2F","/");
//替换所有的%3D
sj=sj.replaceAll("%3D","=");
//找到头的位置并且去掉 千万注意去掉你的头不要有多余字符!!!!
int aa=sj.indexOf("=");
sj=sj.substring(aa+1);

后台部分代码(使用springmvc方式)

public  @ResponseBody Map<String,Object> test2(@RequestBody String sj) throws Exception {

    sj=sj.replaceAll("%2B","+");
    sj=sj.replaceAll("%2F","/");
    sj=sj.replaceAll("%3D","=");
    int aa=sj.indexOf("=");
    sj=sj.substring(aa+1);

    GenerateImage(sj);
    //下面为人工智能识别图片代码没有关系可以删掉的,return map就ok了
    FaceMatch faceMatch=new FaceMatch();
    Map<String,Object> map=new HashMap<>();
    int score=0;
    int indexScore=0;
    String resultMsg=faceMatch.match("F:\\1.png","F:\\3.png");
    map.put("msg","失败");
    indexScore=resultMsg.indexOf("\"score\"");
    score=Integer.parseInt(resultMsg.substring(indexScore+8,indexScore+10));
    System.out.println(score);

    if (score>=80)
        map.put("msg","成功");

    else
        map.put("msg","失败");
    return map;
}

// base64字符串转化成图片
public boolean GenerateImage(String imgStr) throws Exception{ // 对字节数组字符串进行Base64解码并生成图片
if (imgStr == null) // 图像数据为空
return false;

         BASE64Decoder decoder = new BASE64Decoder();
         byte[] b = decoder.decodeBuffer(imgStr);
         // Base64解码,对字节数组字符串进行Base64解码并生成图片

         for (int i = 0; i < b.length; ++i) {
             if (b[i] < 0) {// 调整异常数据
                 b[i] += 256;
             }
         }
         // 生成jpeg图片
         // String imgFilePath = "c://temp_kjbl_001_ab_010.jpg";//新生成的图片
         OutputStream out = new FileOutputStream("F:\\1.png");
         out.write(b);
         out.flush();
         out.close();
         return true;




     }

前端代码如下:

<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

<body>   
拍照 上传 wode
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jack山北

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值