当前位置: 首页 > 面试题库 >

NodeJS mySQL插入Blob

赵骏奇
2023-03-14
问题内容

我需要有关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



 类似资料:
  • 问题内容: 我有个问题。有三个表:T1,T2,T_target。T1和T2表具有许多不同的列,但我只需要两者中的ID列。T_target表具有一个ID列,当然还有另一个:project_No。 T1和T2中也出现了一些ID,但是我不想在它们之间创建重复项,如果一个ID同时出现在两个表中,则只需将其插入到T_target中一次,但是如果它已经在T_target中,则允许行动两次。另一个条件是,每个新

  • 我尝试从本地磁盘(Windows 10)向我的RDS MySQL数据库插入一个blob。然而,我的查询没有插入blob。新行包含所有其他列,但blob为空。 以下是我尝试过的: 我设置了文件的读/写权限 安全文件设置为/tmp。。。我不知道这是什么意思。这是路径还是变量?如果它是一个变量,我已经尝试从用户/系统变量“TMP”的路径上传blob,但没有成功。我无法更改安全文件,因为RDS允许更改。。

  • 问题内容: 我一直在看这段代码已有一段时间了,但我看不出问题出在哪里。我已经阅读了整个StackOverflow,但仍然看不到我的错误在哪里。 错误在第13行中,即thats 。我尝试通过http://www.w3schools.com/php/php_mysql_insert.asp帮助自己,但对我没有太大帮助。 问题答案: 警告: 切勿将 w3schools 用于学习目的。他们的教程中有很多错

  • 问题内容: 我在使用SQL时遇到了一些问题。我正在尝试在表中插入2个值。 那就是我的查询:INSERT INTO tableinfo(table,date)VALUES(’Sell’,’August‘24’); 但它不起作用。我有类似的东西: 这是非常基本的,所以我不知道为什么它不起作用:( PostgreSQL 9.2.4 问题答案: 问题不是出自INSERT,而是您要发出的无效SQL。首先尝试

  • Insert plugins are used to implement functions that are invoked by{insert} tags in the template. 插入插件用来执行在模板中被 {insert} 标记调用的函数 。 stringsmarty_insert_name(array $params, object &$smarty) The first par

  • insert 插入数据到表中insert($table, $data) table [string] 表名. data [array] 插入到表里的数据.Return: [number] 返回插入的id $last_user_id = $database->insert("account", [ "user_name" => "foo", "email" => "foo@bar.com

  • insert 插入数据到表中insert($table, $data) table [string] 表名. data [array] 插入到表里的数据.Return: [number] 返回插入的id $last_user_id = $database->insert("account", [ "user_name" => "foo", "email" => "foo@bar.com

  • 当我们获得了某个DOM节点,想在这个DOM节点内插入新的DOM,应该如何做? 如果这个DOM节点是空的,例如,<div></div>,那么,直接使用innerHTML = '<span>child</span>'就可以修改DOM节点的内容,相当于“插入”了新的DOM节点。 如果这个DOM节点不是空的,那就不能这么做,因为innerHTML会直接替换掉原来的所有子节点。 有两个办法可以插入新的节点。