NodeJS mySQL插入Blob

我需要有关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这样,您可能会在中的前100个字节之后得到一堆额外的垃圾字节buffer

以上是 NodeJS mySQL插入Blob 的全部内容, 来源链接: utcz.com/qa/419760.html

回到顶部