Node.js 如何在NodeJS/Express中验证base64图像?
假设我正在使用Node/Express创建一个restapi,并且通过JSON在客户机和服务器之间交换数据 用户正在填写注册表,其中一个字段是用于上载配置文件图像的图像输入。图像不能通过JSON发送,因此必须转换为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
如何在服务器端验证这确实是映像的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);
});