返回

轻松实现文件上传下载,让存储工作更便捷

前端

文件上传和下载:Node.js 和 Express 教程

简介

在现代网络应用程序中,文件上传和下载是必不可少的特性,使我们能够在服务器和客户端之间轻松传输文件。借助 Node.js 和 Express 框架的强大功能,实现文件上传和下载功能变得轻而易举。

文件上传

文件上传涉及将文件从客户端计算机传输到服务器。它通常用于图像、视频、文档和其他文件类型。使用 multer 中间件,我们可以轻松处理文件上传。

const multer = require('multer');
const storage = multer.diskStorage({
  destination: './uploads/',
  filename: function (req, file, cb) {
    cb(null, Date.now() + '-' + file.originalname);
  }
});
const upload = multer({ storage: storage });
app.post('/upload', upload.single('file'), (req, res, next) => {
  const file = req.file;

  if (!file) {
    const error = new Error('Please upload a file');
    error.httpStatusCode = 400;
    return next(error);
  }

  res.send(file);
});

在上面的代码中,我们配置了 multer 中间件,并定义了文件上传路由,当用户提交文件时,它将保存到 /uploads 目录中。

文件下载

文件下载是将文件从服务器传输到客户端计算机的过程。我们可以使用 express-fileupload 中间件来实现此目的。

const express = require('express');
const fileUpload = require('express-fileupload');
app.use(fileUpload());
app.get('/download/:id', (req, res, next) => {
  const file = path.join(__dirname, 'uploads', req.params.id);

  res.sendFile(file);
});

在上面的代码中,我们配置了 express-fileupload 中间件,并定义了文件下载路由,它将从 /uploads 目录中提取文件并将其发送给客户端。

总结

使用 Node.js 和 Express 框架,我们可以轻松实现文件上传和下载功能。multer 和 express-fileupload 中间件为处理文件传输提供了必要的工具。通过遵循本文中概述的步骤,您可以为您的应用程序添加这些关键功能。

常见问题解答

  1. 我上传的文件有什么大小限制?
    这取决于 multer 配置中设置的最大文件大小。默认情况下,没有大小限制。

  2. 我可以上传哪些文件类型?
    multer 支持上传各种文件类型,包括图像、视频、文档和归档文件。

  3. 下载的文件名称是什么?
    文件下载名称通常与服务器上存储的文件名称相同。

  4. 如何确保上传的文件安全?
    您可以使用文件验证和其他安全措施来防止恶意文件上传。

  5. 我可以同时上传多个文件吗?
    是的,您可以使用 multer 的 array()fields() 方法来同时处理多个文件上传。