基於nodejs express(4.x )實作檔案上傳功能_node.js
Nodejs是一個年輕的程式框架,充滿了活力和無限激情,一直都在保持快速更新。基於Nodejs的官方Web開發庫Express也在同步發展著,每年升級一個大版本,甚至對框架底層都做了大手術。在Express4時,替換掉中件間庫connect,而改用多個更細粒度的庫來取代。帶來的好處是明顯地,這些中間件能更自由的更新和發布,不會受到Express發布週期的影響;但問題也是很的棘手,不相容於之前的版本,升級就意味著要修改程式碼。
透過一段時間的查閱資料、摸索,我發現實現上傳的方式有:1.express中間件multer模組(此效率最高,在express3.x原生支持,到了express4.x獨立成一個模組了), 2.connect-multiparty模組(但現在官方不推薦),3.使用multiparty模組實現(此方法比較普遍),4.使用formidable插件實現(插件呢,就是簡單易懂);
最簡單的做法是透過「connect-multiparty」中間件實作上傳。
透過在專案中npm install connect-multiparty進行安裝。
用法:
var multipart = require('connect-multiparty'); var multipartMiddleware = multipart(); app.post('/upload', multipartMiddleware, function(req, resp) { console.log(req.body, req.files); // don't forget to delete all req.files when done });
上傳後,上傳的文件會在臨時目錄中產生一個臨時文件,具體可將req.files列印出查看具體文件路徑。
只要在註解的地方將暫存檔案移動並重新命名到實際目錄中即可完成上傳功能。
簡單。
官方網址:https://www.npmjs.com/package/connect-multiparty
但是官方不建議使用該中間件,建議直接使用“multiparty”,因為錯誤處理比較麻煩。
下面就用「multiparty」實作一個版本。
1.使用express(版本是4.11.x)建立一個項目,採用預設的jade作為模版引擎。
2.在專案目錄中,透過npm install multiparty進行安裝必要元件。
3.修改views/index.jade,如下做一個簡單的用於文件上傳的form。
extends layout block content form(method='post', action='/file/uploading', enctype='multipart/form-data') input(name='inputFile', type='file', multiple='mutiple') input(name='btnUp', type='submit',value='上传')
4.修改routes/index.js,實作上傳頁面和上傳回應的後台程式碼。
var express = require('express'); var router = express.Router(); var multiparty = require('multiparty'); var util = require('util'); var fs = require('fs'); /* 上传页面 */ router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); }); /* 上传*/ router.post('/file/uploading', function(req, res, next){ //生成multiparty对象,并配置上传目标路径 var form = new multiparty.Form({uploadDir: './public/files/'}); //上传完成后处理 form.parse(req, function(err, fields, files) { var filesTmp = JSON.stringify(files,null,); if(err){ console.log('parse error: ' + err); } else { console.log('parse files: ' + filesTmp); var inputFile = files.inputFile[]; var uploadedPath = inputFile.path; var dstPath = './public/files/' + inputFile.originalFilename; //重命名为真实文件名 fs.rename(uploadedPath, dstPath, function(err) { if(err){ console.log('rename error: ' + err); } else { console.log('rename ok'); } }); } res.writeHead(, {'content-type': 'text/plain;charset=utf-'}); res.write('received upload:\n\n'); res.end(util.inspect({fields: fields, files: filesTmp})); }); }); module.exports = router;
完成。基於nodejs express(4.x )實作檔案上傳功能就全部介紹完了,希望對大家學習nodejs express相關知識有所幫助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

怎麼處理文件上傳?以下這篇文章為大家介紹一下node專案中如何使用express來處理文件的上傳,希望對大家有幫助!

深入比較Express和Laravel:如何選擇最佳框架?在選擇一個適合自己專案的後端框架時,Express和Laravel無疑是兩個備受開發者歡迎的選擇。 Express是基於Node.js的輕量級框架,而Laravel則是基於PHP的流行框架。本文將深入比較這兩個框架的優缺點,並提供具體的程式碼範例,以幫助開發者選擇最適合自己需求的框架。效能和擴展性Expr

Express和Laravel是兩個非常受歡迎的Web框架,分別代表了JavaScript和PHP兩大開發語言的優秀框架。本文將針對這兩個架構進行比較分析,幫助開發者選擇更適合自己專案需求的框架。一、框架簡介Express是一個基於Node.js平台的Web應用程式框架,它提供了一系列強大的功能和工具,使開發者可以快速建立高效能的網路應用程式。 Express

node+express怎麼操作cookie?以下這篇文章就來跟大家介紹一下用node操作cookie的方法,希望對大家有幫助!

Express與Laravel:對比優劣勢,你會選哪一個?在網路開發領域,Express和Laravel是兩個備受關注的框架。 Express是一個基於Node.js的靈活且輕量級的網頁應用框架,而Laravel是一個基於PHP的優雅且功能豐富的Web開發框架。本文將從功能、易用性、擴展性以及社群支援等方面來比較Express和Laravel的優劣勢,並結合

如何利用React和Express來建構全端JavaScript應用引言:React和Express是目前非常流行的JavaScript框架,它們分別用於建構前端和後端應用。本文將介紹如何結合使用React和Express來建構一個全端JavaScript應用程式。我們將逐步講解如何搭建一個簡單的TodoList應用,同時提供具體的程式碼範例。一、準備工作在開始前

如何使用Node.js建立一個簡單的部落格系統Node.js是一個基於ChromeV8引擎的JavaScript執行環境,可以讓JavaScript的運作速度更有效率。在Node.js的幫助下,我們可以使用JavaScript建立強大的伺服器端應用程序,包括部落格系統。本文將向您介紹如何使用Node.js建立一個簡單的部落格系統,並為您提供具體的程式碼範例。請按

在選擇後端框架時,Express和Laravel都是非常受歡迎的選擇。 Express是基於Node.js的Web應用程式開發框架,而Laravel是基於PHP的Web應用程式開發框架。兩者各有優勢,選擇最適合自己的框架需要考慮多面向因素。 Express框架的優點在於它的靈活性和簡單的學習曲線。 Express的核心思想是“足夠小,足夠靈活”,它提供了大量的中間件
