首頁 > web前端 > js教程 > 主體

詳解使用nodejs+express實作簡單的檔案上傳功能

小云云
發布: 2017-12-27 14:03:25
原創
2495 人瀏覽過

本文主要介紹了使用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 })
 });
})
登入後複製

相關程式碼在github.com/bWhirring/n…

#相關推薦:

##詳解Ajax 配合node.js multer 實作文件上傳功能

實例講解thinkjs 檔案上傳功能

#jQuery實作圖片檔案上傳前預覽功能

以上是詳解使用nodejs+express實作簡單的檔案上傳功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板