微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

json字符串转blob存数据库乱码

最近在开发中遇到了一个问题,就是将json字符串转成blob再存入数据库中,导致存入的数据出现了乱码的情况。

json字符串转blob存数据库乱码

我们知道,blob是二进制数据,而json字符串是文本数据,因此在转换的过程中需要注意编码的问题。

我们先来看一下转换成blob的代码

const blob = new Blob([JSON.stringify(data)],{ type: 'application/json' });

其中,data是一个json对象。

接着我们将blob存入数据库

const formData = new FormData();
formData.append('data',blob);
axios.post('/api/saveBlob',formData);

在这个过程中,我们需要注意数据存入时的编码问题。前端认使用的是utf-8编码,而后端则需要根据数据库的编码方式来存储数据。

如果数据库采用的是utf-8编码,那么我们可以直接存储blob数据。否则,就需要先把blob数据转成base64字符串,再存入数据库

具体代码如下:

const reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = () => {
  const base64Str = reader.result.split(',')[1];
  axios.post('/api/saveBase64',{ data: base64Str });
};

在后端接收以后,需要将base64字符串转成二进制数据后再存入数据库。具体代码如下:

const binaryData = Buffer.from(data,'base64');
connection.query('INSERT INTO table SET ?',{ data: binaryData },(error,results) => {
  // do something
});

以上就是将json字符串转成blob存入数据库乱码的解决办法。希望对大家有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐