最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

首先了解下瀏覽器的自動(dòng)下載:

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

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

常見的Content-Disposition值有"inline"和"attachment"。當(dāng)Content-Disposition的值為"attachment"時(shí),瀏覽器會(huì)自動(dòng)下載文件,示例代碼如下:

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

再來了解下multer:

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

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

接下來開始準(zhǔn)備:

//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')
})
 
// 啟動(dòng)服務(wù)器
app.listen(3000, () => {
  console.log('Server running on http://localhost:3000')
})

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

const express = require('express')
const multer = require('multer')
const path = require('path')
 
const app = express()
 
// diskStorage創(chuàng)建上傳存儲(chǔ)器 
const storage = multer.diskStorage({
  // 設(shè)置上傳文件存儲(chǔ)目錄
  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     // 時(shí)間戳+后綴名 生成唯一文件名
    cb(null, filename)
  }
})
 
//創(chuàng)建一個(gè)名為upload的文件上傳示例
const upload = multer({ storage: storage })
 
// 創(chuàng)建上傳路由
// upload.single('image') 處理單個(gè)文件上傳
app.post('/upload', upload.single('image'), (req, res) => {
  const file = req.file
  if (!file) {
    return res.status(400).send('請(qǐng)選擇要上傳的圖片')
  }
  res.send('上傳成功')
})
 
// 啟動(dòng)服務(wù)器
app.listen(3000, () => {
  console.log('Server running on http://localhost:3000')
})

然后實(shí)現(xiàn)文件下載,也是對(duì)app.js進(jìn)行配置:url+uploads+上傳的文件就可以實(shí)現(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) => {
    // 當(dāng)Content-Disposition的值為"attachment"時(shí),瀏覽器會(huì)自動(dòng)下載文件
    res.setHeader('Content-Disposition', 'attachment');
  }
}));
 
// 啟動(dòng)服務(wù)器
app.listen(3000, () => {
  console.log('Server running on http://localhost:3000')
})

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

相關(guān)文章

  • Node.js如何實(shí)現(xiàn)注冊郵箱激活功能 (常見)

    Node.js如何實(shí)現(xiàn)注冊郵箱激活功能 (常見)

    今天了解了node如何實(shí)現(xiàn)郵箱激活功能,這個(gè)功能非常常見,當(dāng)我們注冊一個(gè)賬號(hào)時(shí),肯定會(huì)有這步,下面看下如何實(shí)現(xiàn)這個(gè)功能
    2017-07-07
  • nodeJS(express4.x)+vue(vue-cli)構(gòu)建前后端分離實(shí)例(帶跨域)

    nodeJS(express4.x)+vue(vue-cli)構(gòu)建前后端分離實(shí)例(帶跨域)

    這篇文章主要介紹了nodeJS(express4.x)+vue(vue-cli)構(gòu)建前后端分離實(shí)例(帶跨域) ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 淺談NodeJS中require路徑問題

    淺談NodeJS中require路徑問題

    學(xué)習(xí)Nodejs也是出于對(duì)這個(gè)新產(chǎn)物的好奇,而且有兩個(gè)重要項(xiàng)目也需要他的支持,所以要好好學(xué)學(xué)這個(gè)新語種。在nodejs中,模塊大概可以分為核心模塊和文件模塊。核心模塊是被編譯成二進(jìn)制代碼,引用的時(shí)候只需require表示符即可
    2015-05-05
  • node.JS二進(jìn)制操作模塊buffer對(duì)象使用方法詳解

    node.JS二進(jìn)制操作模塊buffer對(duì)象使用方法詳解

    在ES6引入TypedArray之前,JavaScript語言沒有讀取或操作二進(jìn)制數(shù)據(jù)流的機(jī)制,本文為大家詳細(xì)介紹nodeJS中二進(jìn)制操作模塊buffer對(duì)象使用方法詳解
    2020-02-02
  • 詳解npm和cnpm混用的坑

    詳解npm和cnpm混用的坑

    有沒有遇到過npm和cnpm一起用的時(shí)候出現(xiàn)奇奇怪怪的問題呢? 有沒有遇到過cnpm在支付寶小程序上面安裝包無效?本文就詳解一下npm和cnpm混用的坑,感興趣的可以了解下
    2021-07-07
  • 一文詳解如何使用node執(zhí)行js文件

    一文詳解如何使用node執(zhí)行js文件

    Node.js開發(fā)者過去通常將大多數(shù)可執(zhí)行命令發(fā)布為全局的軟件包,以使它們處于路徑中且可被立即地執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于如何使用node執(zhí)行js文件的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 詳解Node.js串行化流程控制

    詳解Node.js串行化流程控制

    這篇文章主要介紹了詳解Node.js串行化流程控制 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • 基于Alpine Linux構(gòu)建前端node-web鏡像步驟詳解

    基于Alpine Linux構(gòu)建前端node-web鏡像步驟詳解

    這篇文章主要為大家介紹了基于Alpine Linux構(gòu)建前端node-web鏡像步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • node指定內(nèi)存上限簡單代碼實(shí)例

    node指定內(nèi)存上限簡單代碼實(shí)例

    NodeJS啟動(dòng)的應(yīng)用,內(nèi)存使用是有上限的,下面這篇文章主要給大家介紹了關(guān)于node指定內(nèi)存上限的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 快速掌握Node.js環(huán)境的安裝與運(yùn)行方法

    快速掌握Node.js環(huán)境的安裝與運(yùn)行方法

    這篇文章主要介紹了Node.js環(huán)境的安裝與運(yùn)行方法,Node是基于Google Chrome V8引擎的JavaScript解釋器,需要的朋友可以參考下
    2016-02-02

最新評(píng)論

阿图什市| 两当县| 湖口县| 五华县| 绍兴县| 新丰县| 宁武县| 晋城| 海盐县| 邵东县| 策勒县| 彭泽县| 建湖县| 彩票| 澎湖县| 庆云县| 星座| 托克逊县| 河东区| 镇原县| 晋江市| 沁水县| 泸州市| 高州市| 青田县| 顺平县| 汶上县| 宁德市| 陇西县| 合肥市| 西峡县| 开原市| 霍山县| 邵阳市| 汉源县| 宽甸| 都匀市| 玛沁县| 安远县| 改则县| 鄯善县|