最近在开发中遇到了一个问题,就是将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] 举报,一经查实,本站将立刻删除。