Mysql 在nodejs中将longblob转换为image/jpeg或image/png

Mysql 在nodejs中将longblob转换为image/jpeg或image/png,mysql,node.js,blob,buffer,multer,Mysql,Node.js,Blob,Buffer,Multer,我正在尝试将一些图像保存到mysql中。我使用express、multer分别上传/下载图像和处理图像上传的multer。在我的mySQL表中,列类型为longblob。在node js中,我尝试以以下方式保存图像: const avatar = req.file.buffer; const avblob = Buffer.from(toArrayBuffer(avatar)).buffer; 在我的SQL查询中,我将缓冲区avblob保存为BINARY(avblob)。该值显示为[objec

我正在尝试将一些图像保存到mysql中。我使用
express、multer
分别上传/下载图像和处理图像上传的multer。在我的mySQL表中,列类型为longblob。在node js中,我尝试以以下方式保存图像:

const avatar = req.file.buffer;
const avblob = Buffer.from(toArrayBuffer(avatar)).buffer;
在我的SQL查询中,我将缓冲区
avblob
保存为
BINARY(avblob)
。该值显示为
[object ArrayBuffer]
。我正在尝试使用其id访问此图像,写入临时文件并将其作为响应发送。以下是我正在尝试做的:

fs.writeFileSync(__dirname+avatar[0].name+avatar[0].ext, avatar[0].avatar);
    res.sendFile(__dirname+avatar[0].name+avatar[0].ext, (err) => {
        if(err) {
            console.error(err);
            return res.status(500)
                .json({
                    status: 500,
                    message: 'Internal Error'
                });
        }
        res.status(200)
            .json({
                status: 200,
                message: 'Image Sent'
            });
    });
其中
avatar
是来自mysql的
RowDataPacket
,其中
ext
.jpeg
.png
name
是随机名称,
avatar
是图像块数据。当我发回文件时,响应以
ArrayBuffer
的形式出现。我试着将它保存为jpeg文件。但是,当我试图打开该文件时,它已损坏

那么,如何在nodejs中保存和检索图像blob呢?在我的方法中,我没有做或做错事的是什么?最后,在将文件作为响应发送回时,我如何告知客户机图像文件类型、jpeg或png,以便他们使用适当的扩展名保存文件

编辑1

我检查了
内容类型
标题及其图像/jpeg。尝试将缓冲区保存为bas64编码并检索它也不起作用

编辑2


由于我没有找到解决方案,我现在只是将文件保存在一个目录中,并将文件元保存在数据库中。它目前正在工作,但是,如果能够解决这个问题,那将是一件非常棒的事情。

我也有同样的问题,直到最后