21xrx.com
2024-12-22 21:30:33 Sunday
登录
文章检索 我的文章 写文章
Node.js 文件上传、读取和下载
2023-06-30 05:04:51 深夜i     --     --
Node js 文件上传 读取 下载 编程

Node.js 是一个基于事件驱动和非阻塞 I/O 模型的服务器端 JavaScript 环境,可以通过它来实现文件的上传、读取和下载等操作。本文将介绍如何使用 Node.js 来实现这些功能。

文件上传

对于文件上传来说,我们可以使用 Node.js 中的 multer 中间件来实现,它可以帮助我们解析表单数据,并将上传的文件保存在指定的目录中。

使用 multer 的步骤如下:

1. 安装 multer:


npm install --save multer

2. 引入 multer 并配置:


const multer = require('multer');

const storage = multer.diskStorage({

  destination: function (req, file, cb) {

    cb(null, 'uploads/'); // 将上传的文件保存在 uploads 目录中

  },

  filename: function (req, file, cb) {

    cb(null, Date.now() + '-' + file.originalname); // 保存文件时使用时间戳和原始文件名

  }

});

const upload = multer({ storage });

3. 在表单中添加文件上传控件,并在服务器端处理上传的文件:


<form action="/upload" method="post" enctype="multipart/form-data">

  <input type="file" name="myFile">

  <button type="submit">上传</button>

</form>


app.post('/upload', upload.single('myFile'), (req, res) => {

  res.send('文件上传成功!');

});

上传的文件将保存在指定的目录中。

文件读取

对于文件读取来说,我们可以使用 Node.js 中的 fs 模块来实现,它可以帮助我们读取文件内容。

使用 fs 的步骤如下:

1. 引入 fs 模块:


const fs = require('fs');

2. 读取文件内容:


fs.readFile('path/to/file', (err, data) => {

  if (err) throw err;

  console.log(data.toString());

});

如果要读取的是图片等二进制文件,可以使用 fs.readFile 的第二个参数指定编码为 base64,并在返回结果中使用 data.toString('base64') 来获取编码后的字符串。

文件下载

对于文件下载来说,我们可以使用 Node.js 中的 res.download 方法来实现,它可以将指定的文件发送到客户端并提示下载。

使用 res.download 的步骤如下:

1. 在服务器端添加路由:


app.get('/download', (req, res) => {

  const filePath = 'path/to/file'; // 需要下载的文件路径

  res.download(filePath); // 发送文件并提示下载

});

2. 在客户端添加下载链接:


<a href="/download">点击下载文件</a>

下载的文件将保存在客户端指定的目录中。

总结

通过使用 multer 中间件、fs 模块和 res.download 方法,我们可以方便地实现文件上传、读取和下载等操作。在实际开发中,我们还可以结合其他工具和框架来更好地完成文件处理等任务。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复