node檔案上傳功能簡易實現代碼,node檔案上傳代碼

來源:互聯網
上載者:User

node檔案上傳功能簡易實現代碼,node檔案上傳代碼

找了不少檔案上傳的相關模組,最後選擇了比較常用,並且是express推薦使用的 multer 來實現檔案上傳,附上 GitHub 地址

1. 開始

開始第一步,自然就是安裝模組,不多說

npm install multer --save

這裡簡單說一下,因為檔案上傳是用 post 方法提交資料,所以上傳的單檔案或者多檔案會作為一個 body 體添加到請求對象中,我們可以通過 req.file 或者 req.files 查看上傳後檔案的相關資訊。

以單檔案上傳為例,req.file 返回一個對象:

{   "fieldname":"avatar",  #前端上傳檔案input的name   "originalname":"Wx.php",  #本地檔案名稱   "encoding":"7bit",  #檔案編碼類別型   "mimetype":"text/php",  #檔案類型   "destination":"uploads/",  #上傳根目錄   "filename":"1497286037422Wx.php",  #上傳後檔案名稱   "path":"uploads/1497286037422Wx.php",  #檔案路徑   "size":18174  #檔案大小}

該對象的 key 值是固定的,velue 值根據配置產生,用於實現相關邏輯

2. 實現

實現分兩部分,前端和後端

前端

前端就是普通的寫法,form 表單提交

<form action="/test/upload" method="post" enctype="multipart/form-data">  <input type="file" name="avatar">  <input type="submit" name="提交"></form>

切記,enctype="multipart/form-data" 這個屬性一定要加上,否則後台接收不到檔案。

後端

首先我們建立設定檔,upload.js

// upload.jsvar multer = require('multer');  # 引入模組var storage = multer.diskStorage({  destination: function (req, file, cb) {    cb(null, 'uploads/')  },  filename: function (req, file, cb) {    cb(null, Date.now()+file.originalname)  }})var upload = multer({ storage: storage })module.exports = upload;

diskStorage方法相當於建立一個磁碟儲存引擎,設定檔上傳路徑,檔案名稱等,可控性更高。

destination  # 設定檔案上傳路徑filename    # 重新命名檔案

然後建立路由接收檔案,file.js

// file.js var express = require('express');var router = express.Router();// 引入設定檔var upload = require('../config/upload');router.post('/upload', upload.single('avatar'), function(req, res, next) {  res.send(req.file);});module.exports = router;

file.js 中 upload.single() 方法表示接受單檔案,常用的有

upload.single(fname);  // 接收單檔案upload.array(fname[, maxCount])  //接收多檔案,maxCount表示接收最大數量

fname 是前端 <input type="file" name="fname"> 的 name 值

基本的上傳檔案方法就這些了,當然還有很多的配置參數之類的設定,要參考 GitHub 說明,地址在開頭,需要者自行查閱

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援幫客之家。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.