首頁 >web前端 >js教程 >在nodejs+express中如何實現檔案上傳

在nodejs+express中如何實現檔案上傳

亚连
亚连原創
2018-06-15 11:22:171515瀏覽

這篇文章主要介紹了使用nodejs express完成簡單的檔案上傳功能,需要的朋友可以參考下

1.建立express專案

express -e nodejs-uploadfile

#2.下載multer中間件

npm i multer or yarn multer

3.在routes/index.js中引用multer,由於也要使用到檔案操作,還要引用fs模組,並指定文件上傳目錄

const multer = require('multer');
const fs = require('fs');
const UPLOAD_PATH = './uploads'

單一檔案上傳: index.html中檔案如下( form檔案的型別必須為enctype="multipart/form-data" ),

<form action="/upload" method="post" enctype="multipart/form-data">
 <input name="fileUpload" type="file" />
 <img src="" alt="">
 <button type="submit">上传</button>
</form>

在routes/ index.js裡面加入upload路由用來處理上傳檔案的操作

router.post(&#39;/upload&#39;, upload.single(&#39;fileUpload&#39;), function (req, res, next) {
 const { file } = req;
 fs.readFile(file.path, function(err, data) {
 fs.writeFile(`${UPLOAD_PATH}/${file.originalname}`, data, function (err) {
  if (err) res.json({ err })
  res.json({
  msg: &#39;上传成功&#39;
  });
 });
 })
})

如果上傳的檔案是圖片的話,還可以使用FileReader物件實作圖片預覽

(function($){
 $(&#39;input&#39;).on(&#39;change&#39;, function(event) {
 var files = event.target.files,
  reader = new FileReader();
 if(files && files[0]){
  reader.onload = function (ev) {
   $(&#39;img&#39;).attr(&#39;src&#39;, ev.target.result);
  }
  reader.readAsDataURL(files[0]);
 }
 })
}(jQuery))

多重檔案上傳: 多文件上傳的原理和單一檔案上傳的原理一樣,程式碼如下:

router.post(&#39;/upload&#39;, upload.array(&#39;fileUpload&#39;), function (req, res, next) {
 const files = req.files;
 const response = [];
 const result = new Promise((resolve, reject) => {
 files.map((v) => {
  fs.readFile(v.path, function(err, data) {
  fs.writeFile(`${UPLOAD_PATH}/${v.originalname}`, data, function(err, data) {
   const result = {
   file: v,
   }
   if (err) reject(err);
   resolve(&#39;成功&#39;);
  })
  })
 })
 })
 result.then(r => {
 res.json({
  msg: &#39;上传成功&#39;,
 })
 }).catch(err => {
 res.json({ err })
 });
})

上面是我整理給大家的,希望今後會對大家有幫助。

相關文章:

在JavaScript中如何判斷變數名稱是否存在陣列中

透過JS如何實作延遲隱藏功能

使用Angular如何實作定時器功能

#使用Angular如何實作三角箭頭標註功能

#

以上是在nodejs+express中如何實現檔案上傳的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn