要在Adonis.js中验证请求中上传的图像的大小和扩展名,您可以使用Adonis.js的验证器功能。以下是一个解决方案的代码示例:
首先,确保您已经安装了Adonis.js,并创建了一个新的Adonis.js项目。
在您的项目中,创建一个新的验证器。运行以下命令来生成验证器文件:
adonis make:validator ImageValidator
这将在app/Validators
目录下创建一个名为ImageValidator.js
的文件。
ImageValidator.js
文件,并添加以下代码:'use strict'
class ImageValidator {
get rules () {
return {
file: 'file|file_ext:png,jpg,jpeg|file_size:2mb'
}
}
get messages () {
return {
'file.file': 'Invalid file format',
'file.file_ext': 'Invalid file extension. Only png, jpg and jpeg are allowed',
'file.file_size': 'File size must not exceed 2MB'
}
}
}
module.exports = ImageValidator
在上面的代码中,get rules()
方法定义了验证规则。file
字段使用了三个验证规则:
file
:确保所上传的是文件。file_ext
:仅允许扩展名为png、jpg和jpeg的文件。file_size
:确保文件大小不超过2MB。get messages()
方法定义了验证失败时的错误消息。
'use strict'
const ImageValidator = use('App/Validators/ImageValidator')
class YourController {
async upload ({ request }) {
const validation = await validate(request.all(), ImageValidator.rules, ImageValidator.messages)
if (validation.fails()) {
return validation.messages()
}
// 上传图像的逻辑
}
}
module.exports = YourController
在上面的代码中,我们引入了ImageValidator
,并在upload
方法中使用了验证器。首先,我们对请求中的所有字段进行验证,使用ImageValidator.rules
和ImageValidator.messages
作为验证规则和错误消息。如果验证失败,我们返回错误消息数组。
// start/routes.js
'use strict'
const Route = use('Route')
Route.post('/upload', 'YourController.upload')
在上面的代码中,我们将/upload
路由与YourController.upload
方法关联起来。
现在,当您发送带有图像的POST请求到/upload
路由时,Adonis.js将自动验证图像的大小和扩展名,并返回相应的错误消息(如果有)。