欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于node使用multer進行文件的上傳與下載

 更新時間:2023年04月19日 10:51:41   作者:阿晨學前端  
這篇文章主要介紹了關(guān)于node使用multer進行文件的上傳與下載,Multer是一個Node.js中間件,用于處理表單數(shù)據(jù)中的multipart/form-data類型,需要的朋友可以參考下

首先了解下瀏覽器的自動下載:

使用Express靜態(tài)資源中間件的默認行為是在瀏覽器中展示靜態(tài)文件,而不是自動下載。

如果需要訪問靜態(tài)資源時自動下載,可以在HTTP響應(yīng)中設(shè)置Content-Disposition頭。Content-Disposition頭指示瀏覽器以何種方式處理要下載的文件。

常見的Content-Disposition值有"inline"和"attachment"。當Content-Disposition的值為"attachment"時,瀏覽器會自動下載文件,示例代碼如下:

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

再來了解下multer:

Multer是一個Node.js中間件,用于處理表單數(shù)據(jù)中的multipart/form-data類型。主要用于上傳文件,將上傳的文件保存到指定的目錄中。

Multer還提供了多個方法,這些方法可以根據(jù)不同的需求設(shè)置文件上傳的行為。比如:single()方法用于上傳單個文件,none()方法表示不接受任何文件,fields()方法用于上傳多個字段的文件,limits屬性用于限制上傳文件的大小等

接下來開始準備:

//html
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>圖片上傳</title>
</head>
<body>
  <input type="file" id="fileInput">
  <br><br>
  <button onclick="upload()">上傳</button>
  
  <script>
    function upload() {
      const formData = new FormData()
      formData.append('image', document.getElementById('fileInput').files[0])
      
      fetch('http://127.0.0.1:3000/upload', {
        method: 'POST',
        body: formData
      })
      .then(response => response.text())
      .then(result => {
        console.log(result)
      })
    }
  </script>
</body>
</html>
//app.js
const express = require('express')
const app = express()
 
// 創(chuàng)建上傳路由
app.post('/upload', (req, res) => {
  res.send('hello world')
})
 
// 啟動服務(wù)器
app.listen(3000, () => {
  console.log('Server running on http://localhost:3000')
})

 安裝Multer,npm i Multer,根目錄新建一個uploads文件夾 然后對app.js進行配置:就實現(xiàn)了文件上傳

const express = require('express')
const multer = require('multer')
const path = require('path')
 
const app = express()
 
// diskStorage創(chuàng)建上傳存儲器 
const storage = multer.diskStorage({
  // 設(shè)置上傳文件存儲目錄
  destination: function (req, file, cb) {
    cb(null, './uploads/') 
  },
  //保存在 uploads 中的文件名
  filename: function (req, file, cb) {
    const extname = path.extname(file.originalname) // 獲取文件后綴名
    const filename = Date.now() + '-' + extname     // 時間戳+后綴名 生成唯一文件名
    cb(null, filename)
  }
})
 
//創(chuàng)建一個名為upload的文件上傳示例
const upload = multer({ storage: storage })
 
// 創(chuàng)建上傳路由
// upload.single('image') 處理單個文件上傳
app.post('/upload', upload.single('image'), (req, res) => {
  const file = req.file
  if (!file) {
    return res.status(400).send('請選擇要上傳的圖片')
  }
  res.send('上傳成功')
})
 
// 啟動服務(wù)器
app.listen(3000, () => {
  console.log('Server running on http://localhost:3000')
})

然后實現(xiàn)文件下載,也是對app.js進行配置:url+uploads+上傳的文件就可以實現(xiàn)下載

const express = require('express')
const multer = require('multer')
const path = require('path')
 
const app = express()
 
XXXXXXXXXXXXXXX 跟上面一樣的
 
app.use('/uploads', express.static(__dirname + '/uploads', {
  setHeaders: (res, path) => {
    // 當Content-Disposition的值為"attachment"時,瀏覽器會自動下載文件
    res.setHeader('Content-Disposition', 'attachment');
  }
}));
 
// 啟動服務(wù)器
app.listen(3000, () => {
  console.log('Server running on http://localhost:3000')
})

到此這篇關(guān)于關(guān)于node使用multer進行文件的上傳與下載的文章就介紹到這了,更多相關(guān)node使用multer文件上傳下載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Node.js打包管理工具NPM用法

    Node.js打包管理工具NPM用法

    這篇文章介紹了Node.js打包管理工具NPM的用法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • Node.js使用Express創(chuàng)建Web項目詳細教程

    Node.js使用Express創(chuàng)建Web項目詳細教程

    如果需要入門使用node.js進行web開發(fā),正在學習 nodejs web開發(fā)指南 的和想快速了解node.js web開發(fā)模式的朋友,相信本文是有一定幫助意義的。
    2017-03-03
  • nodejs中操作mysql數(shù)據(jù)庫示例

    nodejs中操作mysql數(shù)據(jù)庫示例

    這篇文章主要介紹了nodejs中操作mysql數(shù)據(jù)庫示例,本文演示了如何在NodeJS中創(chuàng)建創(chuàng)建mysql連接、mysql數(shù)據(jù)庫、插入數(shù)據(jù)、查詢數(shù)據(jù)等功能,需要的朋友可以參考下
    2014-12-12
  • 詳解nodejs微信公眾號開發(fā)——2.自動回復

    詳解nodejs微信公眾號開發(fā)——2.自動回復

    這篇文章主要介紹了詳解nodejs微信公眾號開發(fā)——2.自動回復,非常具有實用價值,需要的朋友可以參考下
    2017-04-04
  • 一步步教你使用node搭建一個小頁面

    一步步教你使用node搭建一個小頁面

    最近使用NodeJs搭建的小型web應(yīng)用,所以下面這篇文章主要給大家介紹了關(guān)于使用node搭建一個小頁面的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • 用Nodejs搭建服務(wù)器訪問html、css、JS等靜態(tài)資源文件

    用Nodejs搭建服務(wù)器訪問html、css、JS等靜態(tài)資源文件

    本篇文章主要介紹了用Nodejs搭建服務(wù)器訪問html、css、JS等靜態(tài)資源文件的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • Node中的util.promisify()方法的基本使用和實現(xiàn)

    Node中的util.promisify()方法的基本使用和實現(xiàn)

    眾所周知,在JS中實現(xiàn)異步編程主要是通過以下幾種方案,回調(diào)函數(shù),觀察者模式,Generator,Promise,async / await ,今天就和大家一起聊一下在node中的一個util.promisify()這個API的基本使用和基本實現(xiàn)
    2023-07-07
  • 帶你了解NodeJS事件循環(huán)

    帶你了解NodeJS事件循環(huán)

    這篇文章主要介紹NodeJS事件循環(huán),Node中代碼從上到下同步執(zhí)行,在執(zhí)行過程中會將不同的任務(wù)添加到相應(yīng)的隊列中,那具體有的循環(huán)又是怎么回事呢,限免現(xiàn)編就帶大家學習該詳細內(nèi)容,需要的朋友也可以參考一下
    2022-02-02
  • node.js express捕獲全局異常的三種方法實例分析

    node.js express捕獲全局異常的三種方法實例分析

    這篇文章主要介紹了node.js express捕獲全局異常的三種方法,結(jié)合實例形式簡單分析了node.js express捕獲全局異常的常見操作方法與使用注意事項,需要的朋友可以參考下
    2019-12-12
  • nodejs教程之制作一個簡單的文章發(fā)布系統(tǒng)

    nodejs教程之制作一個簡單的文章發(fā)布系統(tǒng)

    本文主要講述了使用nodejs制作一個簡單的文章發(fā)布系統(tǒng),使用mongodb數(shù)據(jù)庫,時間比較緊,功能做的也比較簡單,僅僅是增刪改查,外加附近上傳,有相同需求的小伙伴可以參考下
    2014-11-11

最新評論