首頁 > web前端 > js教程 > node.js使用multer中間件上傳文件

node.js使用multer中間件上傳文件

青灯夜游
發布: 2021-03-04 10:36:16
轉載
1828 人瀏覽過

這篇文章跟大家介紹一下node.js使用multer中間件解決post檔上傳問題的方法。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有幫助。

node.js使用multer中間件上傳文件

相關推薦:《nodejs 教學

body-parser中間件,其實「極度不完美」 —— 它只能處理「單純的數據」。
眾所周知,post常用於兩件事:

  • 資料提交(post表單提交)

  • 檔案上傳

但「大名鼎鼎」的body-parser只能做到第一點。

難受…

先前寫過的圖片檔案上傳文章中用到了formidable模組,其核心在於:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;">var form=new formidable.IncomingForm();</pre><div class="contentsignin">登入後複製</div></div>其後的form.uploadDir

field/end的監聽

… 都是基於此。


好了這裡我們要說的是缺點:和body-parser一樣,formidable外掛只能用來處理圖片格式,也是一大遺憾了。

於是,筆者找到了

multer中間件

,希望它能「拯救者支離破碎的山河」(呵呵)

multer中間件的應用之一:檔案上傳

(c)npm install express multer
登入後複製
const express = require(&#39;express&#39;);
const bodyparser = require(&#39;body-parser&#39;);//解析post数据
const multer = require(&#39;multer&#39;); //解析Post文件
const fs = require(&#39;fs&#39;);
const pathlib = require(&#39;path&#39;); //解析文件路径
 
var server = express();
 
var objMulter = multer({dest:&#39;./www/upload&#39;}); //用户上传文件存入dest目录下
server.use(objMulter.any()); //处理任何用户上传的文件
 
//处理post文件数据
server.post(&#39;/&#39;,function(req,res){
	console.log(req.files[0].originalname); //req.files post文件 originalname为文件名
 
	//获取原始拓展名+后缀名
	var newName = req.files[0].path+pathlib.parse(req.files[0].originalname).ext;
 
	//重命名
	fs.rename(req.files[0].path,newName,function(err){
		if(err){
			res.send(&#39;上传失败&#39;);
		}else{
			res.send(&#39;上传成功&#39;);
		}
	});
});
server.listen(8081);
登入後複製

這裡,用req.files頂替了req.body:因為body中只能存放(文字)數鋸-這裡如果用body-parser的話,看到的只是控制台上顯示的檔案名稱。 程式碼中
objMulter.any() 作用是「 取得所有資料」;any() 相對的還有一個single( ) ,它裡面要指定一個參數-前端

裡的name名!如本例還可以這樣寫:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;">server.use(objMulter.single(&amp;#39;f1&amp;#39;));</pre><div class="contentsignin">登入後複製</div></div>前端程式碼如下- 檔案提交,指定格式為

multipart/form-data

<form action="http://localhost:8081/" method="post" enctype="multipart/form-data">
	文件:<input type="file" name="f1" /><br />
	<input type="submit" value="上传" />
</form>
登入後複製

其實就是用了fs模組中的rename(原路徑,新路徑,callback)方法,透過將檔案強制更改存放路徑來達到「上傳檔案」的目的。


今日擴展:

node中常用path模組中的resolve方法來「指定檔案」(注意第16/17行):

更多程式相關知識,請造訪:

程式設計學習###! ! ###

以上是node.js使用multer中間件上傳文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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