gpt4 book ai didi

mysql - NodeJS mySQL 插入 Blob

转载 作者:可可西里 更新时间:2023-11-01 06:35:57 26 4
gpt4 key购买 nike

我需要一点帮助使用 NodeJS 和 MySQL blob 插入。

这是我正在使用的代码片段

fs.open(temp_path, 'r', function (status, fd) {
if (status) {
console.log(status.message);
return;
}
var buffer = new Buffer(getFilesizeInBytes(temp_path));
fs.read(fd, buffer, 0, 100, 0, function (err, num) {
var query ="INSERT INTO `files` (`file_type`, `file_size`, `file`) VALUES ('img', " + getFilesizeInBytes(temp_path) + ",'" + buffer + "' );";
mySQLconnection.query(query, function (er, da) {
if (er)throw er;
});
});
});

查询将文件插入表中,我得到了正确的文件大小,但是当我尝试检索文件并打开它(例如 PDF 文件)我收到一条消息说文件已损坏。

我一定是在从文件中读取缓冲区时做错了什么。

最佳答案

尝试替换:

var query ="INSERT INTO `files` (`file_type`, `file_size`, `file`) VALUES ('img', " + getFilesizeInBytes(temp_path) + ",'" + buffer + "' );";
mySQLconnection.query(query, function (er, da) {

与:

var query = "INSERT INTO `files` SET ?",
values = {
file_type: 'img',
file_size: buffer.length,
file: buffer
};
mySQLconnection.query(query, values, function (er, da) {

您可能还想将 file: buffer 更改为 file: buffer.slice(0, 100) 因为您只读取文件的前 100 个字节。如果 buffer.length > 100 那么您可能会在 buffer 的前 100 个字节之后得到一堆额外的垃圾字节。

关于mysql - NodeJS mySQL 插入 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25951251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com