📜  如何使用 Node.js 在文件上传中添加身份验证?

📅  最后修改于: 2022-05-13 01:56:13.366000             🧑  作者: Mango

如何使用 Node.js 在文件上传中添加身份验证?

有多种方法可以上传文件并对其应用身份验证。最简单的方法是使用名为 multer 的节点模块。我们可以通过限制用户上传文件来添加身份验证,例如他们只能上传 pdf 并且文件大小应小于 1 Mb。

市场上有许多可用的模块,但 multer 是最受欢迎的。它为我们提供了不同的选项来自定义和限制我们想要的文件格式类型。

先决条件:您应该知道 multer 中的文件上传是如何工作的。

multer模块的安装:

第 1 步:您可以通过运行以下命令进行 multer

npm i multer

第 2 步:您可以通过运行以下命令检查模块版本。

npm version multer

第3步:之后,您可以创建一个文件夹并添加一个文件并通过以下命令运行创建的文件。

node .js

第 4 步:需要模块:您需要使用这些行在文件中包含 multer 模块。

const multer = require('multer');

1.通过fileSize限制用户:

示例: Multer 为我们提供了一个名为 limits 的属性,我们可以在其中定义文件大小和

Javascript
// Requiring the multer module in our project
const multer = require('multer');
const upload = multer({
    dest: 'src',
    limits: {
  
        // Here we have to give size in bytes 
        fileSize: 1000000;
    }
})


Javascript
// Requiring the multer module in our project
const multer = require('multer');
const upload = multer({
  
    // dest is the destination where file will be stored
    dest: 'src',
    fileFilter(req, file, cb) {
  
        // We are providing a regular expression 
        // which accepts only jpg,jpeg and png
        if (!file.originalname.match(/\.(png|jpg|jpeg)$/)) {
            return cb(new Error('Upload an image'));
        }
        cb(undefined, true);
    }
})


输出:

在上面的代码中,我们通过指定程序只接受大小小于或等于指定大小的文件来限制用户。

在上图中,我们正在尝试上传大于 1 MB 的图像,因此它给了我们一个错误。

2. 文件类型限制

示例: multer 有一个名为 fileFilter 的函数,它使我们能够访问文件对象,然后我们可以在其中执行必要的操作。

Javascript

// Requiring the multer module in our project
const multer = require('multer');
const upload = multer({
  
    // dest is the destination where file will be stored
    dest: 'src',
    fileFilter(req, file, cb) {
  
        // We are providing a regular expression 
        // which accepts only jpg,jpeg and png
        if (!file.originalname.match(/\.(png|jpg|jpeg)$/)) {
            return cb(new Error('Upload an image'));
        }
        cb(undefined, true);
    }
})

输出:

在上面的示例中,我们正在上传一个 doc 文件,但 multer 不接受它,因为我们只接受图像。