温馨提示×

如何在Ubuntu中用Node.js处理文件上传

小樊
39
2025-12-04 07:39:22
栏目: 编程语言

在Ubuntu中使用Node.js处理文件上传,你可以使用流行的中间件multer

  1. 首先确保你已经安装了Node.js和npm。如果没有,请访问Node.js官网下载并安装。

  2. 创建一个新的项目文件夹,并在该文件夹中打开终端。

  3. 使用以下命令初始化项目并创建一个package.json文件:

    npm init -y
    
  4. 安装expressmulter

    npm install express multer
    
  5. 在项目文件夹中创建一个名为app.js的文件,并添加以下代码:

    const express = require('express');
    const multer = require('multer');
    const app = express();
    
    // 设置存储引擎
    const storage = multer.diskStorage({
      destination: function (req, file, cb) {
        cb(null, 'uploads/');
      },
      filename: function (req, file, cb) {
        cb(null, file.fieldname + '-' + Date.now() + '-' + file.originalname);
      }
    });
    
    // 初始化上传
    const upload = multer({
      storage: storage,
      limits: { fileSize: 10 * 1024 * 1024 }, // 限制文件大小为10MB
      fileFilter: function (req, file, cb) {
        checkFileType(file, cb);
      }
    }).single('file'); // 'file'是表单中的文件字段名称
    
    // 检查文件类型
    function checkFileType(file, cb) {
      // 允许的文件扩展名
      const filetypes = /jpeg|jpg|png|gif/;
      // 检查扩展名
      const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
      // 检查MIME类型
      const mimetype = filetypes.test(file.mimetype);
    
      if (mimetype && extname) {
        return cb(null, true);
      } else {
        cb('Error: Images Only!');
      }
    }
    
    // 路由
    app.post('/upload', (req, res) => {
      upload(req, res, (err) => {
        if (err) {
          res.status(400).send({ message: err });
        } else {
          if (req.file == undefined) {
            res.status(400).send({ message: 'No File Selected!' });
          } else {
            res.send({
              message: 'File Uploaded!',
              file: `uploads/${req.file.filename}`
            });
          }
        }
      });
    });
    
    // 启动服务器
    const PORT = process.env.PORT || 3000;
    app.listen(PORT, () => console.log(`Server started on port ${PORT}`));
    
  6. 在项目文件夹中创建一个名为uploads的文件夹,用于存储上传的文件。

  7. 运行你的Node.js应用程序:

    node app.js
    

现在,你的Node.js应用程序已经准备好处理文件上传了。你可以使用Postman或其他API测试工具向http://localhost:3000/upload发送一个包含文件的POST请求来测试文件上传功能。确保在表单中设置Content-Typemultipart/form-data,并将文件字段名称设置为file

0