温馨提示×

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

小樊
41
2025-11-20 12:39:14
栏目: 编程语言

在Ubuntu上使用Node.js处理文件上传,你可以使用流行的中间件multer。以下是使用multer进行文件上传的步骤:

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

  2. 创建一个新的项目文件夹,并在该文件夹中运行以下命令来初始化一个新的Node.js项目:

    npm init -y
    
  3. 安装expressmulter

    npm install express multer
    
  4. 在项目文件夹中创建一个名为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}`));
    
  5. 在项目文件夹中创建一个名为uploads的文件夹,用于存储上传的文件。

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

    node app.js
    
  7. 现在,你可以使用Postman或其他API测试工具向http://localhost:3000/upload发送一个包含文件的POST请求。在表单数据中,添加一个名为file的字段,并选择要上传的文件。

  8. 如果一切正常,你应该会收到一个包含已上传文件信息的响应。

这就是在Ubuntu上使用Node.js和multer处理文件上传的方法。你可以根据需要调整代码以满足你的需求。

0