node怎么使用multer进行文件的上传与下载

其他教程   发布日期:2025年03月17日   浏览次数:195

这篇“node怎么使用multer进行文件的上传与下载”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“node怎么使用multer进行文件的上传与下载”文章吧。

首先了解下浏览器的自动下载:

使用Express静态资源中间件的默认行为是在浏览器中展示静态文件,而不是自动下载。

如果需要访问静态资源时自动下载,可以在HTTP响应中设置Content-Disposition头。Content-Disposition头指示浏览器以何种方式处理要下载的文件。

常见的Content-Disposition值有"inline"和"attachment"。当Content-Disposition的值为"attachment"时,浏览器会自动下载文件,示例代码如下:

  1. app.use('/uploads', express.static(__dirname + '/uploads', {
  2. setHeaders: (res, path) => {
  3. res.setHeader('Content-Disposition', 'attachment');
  4. }
  5. }));

再来了解下multer:

Multer是一个Node.js中间件,用于处理表单数据中的multipart/form-data类型。主要用于上传文件,将上传的文件保存到指定的目录中。

Multer还提供了多个方法,这些方法可以根据不同的需求设置文件上传的行为。比如:single()方法用于上传单个文件,none()方法表示不接受任何文件,fields()方法用于上传多个字段的文件,limits属性用于限制上传文件的大小等

接下来开始准备:

  1. //html
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>图片上传</title>
  7. </head>
  8. <body>
  9. <input type="file" id="fileInput">
  10. <br><br>
  11. <button onclick="upload()">上传</button>
  12. <script>
  13. function upload() {
  14. const formData = new FormData()
  15. formData.append('image', document.getElementById('fileInput').files[0])
  16. fetch('http://127.0.0.1:3000/upload', {
  17. method: 'POST',
  18. body: formData
  19. })
  20. .then(response => response.text())
  21. .then(result => {
  22. console.log(result)
  23. })
  24. }
  25. </script>
  26. </body>
  27. </html>
  1. //app.js
  2. const express = require('express')
  3. const app = express()
  4. // 创建上传路由
  5. app.post('/upload', (req, res) => {
  6. res.send('hello world')
  7. })
  8. // 启动服务器
  9. app.listen(3000, () => {
  10. console.log('Server running on http://localhost:3000')
  11. })

安装Multer,npm i Multer,根目录新建一个uploads文件夹 然后对app.js进行配置:就实现了文件上传

  1. const express = require('express')
  2. const multer = require('multer')
  3. const path = require('path')
  4. const app = express()
  5. // diskStorage创建上传存储器
  6. const storage = multer.diskStorage({
  7. // 设置上传文件存储目录
  8. destination: function (req, file, cb) {
  9. cb(null, './uploads/')
  10. },
  11. //保存在 uploads 中的文件名
  12. filename: function (req, file, cb) {
  13. const extname = path.extname(file.originalname) // 获取文件后缀名
  14. const filename = Date.now() + '-' + extname // 时间戳+后缀名 生成唯一文件名
  15. cb(null, filename)
  16. }
  17. })
  18. //创建一个名为upload的文件上传示例
  19. const upload = multer({ storage: storage })
  20. // 创建上传路由
  21. // upload.single('image') 处理单个文件上传
  22. app.post('/upload', upload.single('image'), (req, res) => {
  23. const file = req.file
  24. if (!file) {
  25. return res.status(400).send('请选择要上传的图片')
  26. }
  27. res.send('上传成功')
  28. })
  29. // 启动服务器
  30. app.listen(3000, () => {
  31. console.log('Server running on http://localhost:3000')
  32. })

然后实现文件下载,也是对app.js进行配置:url+uploads+上传的文件就可以实现下载

  1. const express = require('express')
  2. const multer = require('multer')
  3. const path = require('path')
  4. const app = express()
  5. XXXXXXXXXXXXXXX 跟上面一样的
  6. app.use('/uploads', express.static(__dirname + '/uploads', {
  7. setHeaders: (res, path) => {
  8. // 当Content-Disposition的值为"attachment"时,浏览器会自动下载文件
  9. res.setHeader('Content-Disposition', 'attachment');
  10. }
  11. }));
  12. // 启动服务器
  13. app.listen(3000, () => {
  14. console.log('Server running on http://localhost:3000')
  15. })

以上就是node怎么使用multer进行文件的上传与下载的详细内容,更多关于node怎么使用multer进行文件的上传与下载的资料请关注九品源码其它相关文章!