【问题标题】:How to validate multipart file on AdonisJS?如何在 AdonisJS 上验证多部分文件?
【发布时间】:2019-12-03 05:57:25
【问题描述】:

我在最新版本中使用Adonis.js,但无法验证... 已经试过了

request.multipart.file('avatar', {
  types: ['jpeg', 'jpg', 'png'], // I already tried -> type: ['image'] types: ['image'],
  size: "4mb"
  }, async file => {
    await Drive.put(key, file.stream)
})

.../Validators/changeAvatar.js

'use strict'

class UserChangeAvatar {
  get rules() {
    return {
      avatar: 'required|file|file_ext:png,jpg,jpeg,svg'
    }
  }
}

module.exports = UserChangeAvatar

没有任何作用,该代码允许您上传任何类型的文件,例如 .pdf.mp4

Adonis.js 文档中也没有提及它。

包版本

4.1 版 "@adonisjs/framework": "^5.0.9"

Node.js 和 npm 版本

节点 - v10.15.0 NPM - 6.10.1

【问题讨论】:

    标签: javascript validation adonis.js


    【解决方案1】:

    验证规则不适用于adonis 上的分段文件上传。您需要进行手动验证。例如:

    // Helper function
    function fileStreamValidation(file, validationRules) {
      const validationErrors = []
      if (!RegExp(/^[0-9a-zA-Z_\-.]+$/).test(file._clientName)) {
        validationErrors.push(
          `${file._clientName}'s name should only contain alphanumeric, underscore, dot, hypen`
        )
      }
      if (validationRules.extnames && validationRules.extnames.length) {
        const [_, fileExtension] = file._clientName.split(/\.(?=[^.]+$)/)
        if (!validationRules.extnames.includes(fileExtension)) {
          validationErrors.push(`${file._clientName}'s extension is not acceptable`)
        }
      }
      if (validationRules.maxFileSizeInMb) {
        if (file.stream.byteCount > validationRules.maxFileSizeInMb * 1000000) {
          validationErrors.push(`${file._clientName}'s size exceeded limit`)
        }
      }
      return validationErrors
    }
    
    /* validation in controller */
    const validationOptions = {
      extnames: ['in', 'out'],
      maxFileSizeInMb: parseInt(Env.get('MAX_FILE_SIZE_IN_MB'))
    }
    request.multipart.file('datasets[]', {}, async file => {
      const errors = fileStreamValidation(file, validationOptions)
    })
    

    【讨论】:

      猜你喜欢
      • 2012-04-10
      • 2021-10-14
      • 2015-10-26
      • 1970-01-01
      • 1970-01-01
      • 2020-04-20
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多