Node.js 如何在NodeJS/Express中验证base64图像?

Node.js 如何在NodeJS/Express中验证base64图像?,node.js,express,base64,Node.js,Express,Base64,假设我正在使用Node/Express创建一个restapi,并且通过JSON在客户机和服务器之间交换数据 用户正在填写注册表,其中一个字段是用于上载配置文件图像的图像输入。图像不能通过JSON发送,因此必须转换为base64字符串 如何在服务器端验证这确实是映像的base64字符串?或者不将配置文件映像作为base64发送是最佳做法吗?您可以先检查字符串是否为base64映像,并使用正确的mime类型。 我在npm注册表上发现,它正是这样做的(未经测试) 然后,您可以验证应用程序中是否允许mi

假设我正在使用Node/Express创建一个restapi,并且通过JSON在客户机和服务器之间交换数据

用户正在填写注册表,其中一个字段是用于上载配置文件图像的图像输入。图像不能通过JSON发送,因此必须转换为base64字符串


如何在服务器端验证这确实是映像的base64字符串?或者不将配置文件映像作为base64发送是最佳做法吗?

您可以先检查字符串是否为base64映像,并使用正确的mime类型。
我在npm注册表上发现,它正是这样做的(未经测试)

然后,您可以验证应用程序中是否允许mime类型,或者进行其他验证,如尝试显示图像文件并捕获可能的错误


无论如何,如果你想真正确定用户输入,首先你必须自己处理。这是您应该注意的最佳实践。

Base64值只有在其解码数据具有正确的MIME类型且宽度和高度大于零时,它才是有效的图像。检查所有这些的一个简便方法是安装软件包并按如下方式使用:

var b64 = 'R0lGODdhAQADAPABAP////8AACwAAAAAAQADAAACAgxQADs=',
buf = Buffer.from(b64, 'base64');

require('jimp').read(buf).then(function (img) {
    if (img.bitmap.width > 0 && img.bitmap.height > 0) {
        console.log('Valid image');
    } else {
        console.log('Invalid image');
    }
}).catch (function (err) {
    console.log(err);
});

可能是@SanSolo的副本另一个没有回答我的问题为什么你不以标准方式上传它…以文件形式发送?
var b64 = 'R0lGODdhAQADAPABAP////8AACwAAAAAAQADAAACAgxQADs=',
buf = Buffer.from(b64, 'base64');

require('jimp').read(buf).then(function (img) {
    if (img.bitmap.width > 0 && img.bitmap.height > 0) {
        console.log('Valid image');
    } else {
        console.log('Invalid image');
    }
}).catch (function (err) {
    console.log(err);
});