前端解析后端通过base64编码的数据

由于之前做项目,把微信名称保存到数据库会报错,有些特殊字符的格式使用的是4个字节,而Mysql的UTF-8是三字节所以会发生报错。
解决步骤:

  • 修改该字段的编码格式:ALTER TABLE t_game_player CHANGE nickName nickName VARCHAR(255) CHARACTER SET utf8mb4;
    修改数据库的编码格式
  • WINDOWS上的数据库:在数据库根目录下找到my.ini(5.7版本好像默认是没有这个配置文件,可以自己创建一个),添加一行:character-set-server=utf8mb4,最后重启数据库就解决这个问题了。

通过代码解决:
我们现在知道原因出现在哪里我们可以把这些字符统一编码保存到库中,后面通过把字段进行base64编码在存入到数据库中,这样前端就得把该字段进行base64解码。

后端base64编码:

/**
     * 编码
     * @param msg
     * @return
     */
    public static String encodeToString(String msg){
        //编码
        String encodeBase64String=null;
        try {
            if (msg!=null){
                encodeBase64String = Base64.encodeBase64String(msg.getBytes("UTF-8"));
                System.out.println(encodeBase64String);
                return encodeBase64String;
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        return  encodeBase64String;
    }

前端base64解码:

    /**
     * 对后端的base64数据解析解码
     * @param str
     * @returns {string}
     */
    function b64DecodeUnicode(str) {
        return decodeURIComponent(
             atob(str)
            .split('')
            .map(
            function(c) {
                        return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
                    })
            .join(''));
    }

在这里插入图片描述
通过formatter函数把对应的列进行格式化输出
在这里插入图片描述

    //操作栏的格式化
    function actionFormatter(value, row, index) {
	    console.log("列"+row,"坐标"+index)
        console.log(row.username+"---")

        var username = b64DecodeUnicode(row.username);
	    console.log("解码:"+username)

        var result = "";
        result += username;
        return result;
    }

这样就可以吧微信名称解析出来
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
好的,以下是使用 Node.js 和 Express 框架保存 Base64 格式的图片到 MongoDB 数据库的示例代码: 首先需要安装依赖包,包括 express、mongoose、body-parser 和 multer: ``` npm install express mongoose body-parser multer --save ``` 然后在服务器端代码中引入依赖包和数据库模型: ```javascript const express = require('express'); const mongoose = require('mongoose'); const bodyParser = require('body-parser'); const multer = require('multer'); const app = express(); // 定义图片存储路径和文件名 const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, './uploads'); // 存储路径 }, filename: function (req, file, cb) { cb(null, file.fieldname + '-' + Date.now() + '.jpg'); // 文件名 } }); // 创建 Multer 实例 const upload = multer({ storage: storage }); // 定义数据库模型 const ImageSchema = new mongoose.Schema({ name: String, data: Buffer }); const Image = mongoose.model('Image', ImageSchema); // 连接 MongoDB 数据库 mongoose.connect('mongodb://localhost:27017/mydb', { useNewUrlParser: true }); const db = mongoose.connection; db.on('error', console.error.bind(console, 'MongoDB connection error:')); // 解析 JSON 和表单数据 app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); // 保存图片到数据库 app.post('/api/images', upload.single('image'), (req, res) => { const name = req.body.name; const data = req.file.buffer; const image = new Image({ name, data }); image.save(err => { if (err) { console.log(err); res.status(500).send('Error uploading image'); } else { res.status(200).send('Image uploaded successfully'); } }); }); // 启动服务器 app.listen(3000, () => console.log('Server started on port 3000')); ``` 以上代码中,使用 Multer 模块来处理上的图片文件,将其保存在指定的路径和文件名中,并将图片的名称和二进制数据存储在 MongoDB 数据库中。在前端发送请求时,需要将图片的 Base64 编码作为请求体中的数据,以表单的形式发送到后端接口。 注意:以上代码仅供参考,需要根据具体情况进行调整和优化,例如需要添加文件类型和大小限制、错误处理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hi梅

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

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

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

打赏作者

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

抵扣说明:

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

余额充值