真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

這篇文章主要介紹了node.js使用multer中間件上傳文件的方法,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)是一家成都網(wǎng)站制作、成都網(wǎng)站建設(shè),提供網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,建網(wǎng)站,定制網(wǎng)站,網(wǎng)站開發(fā)公司,2013年開創(chuàng)至今是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價(jià)值為核心業(yè)務(wù),全程參與項(xiàng)目的網(wǎng)站策劃設(shè)計(jì)制作,前端開發(fā),后臺(tái)程序制作以及后期項(xiàng)目運(yùn)營(yíng)并提出專業(yè)建議和思路。

body-parser中間件,其實(shí)“極不完美” —— 它只能處理“單純的數(shù)據(jù)”。
眾所周知,post常用于兩件事:

  • 數(shù)據(jù)提交(post表單提交)

  • 文件上傳

但“大名鼎鼎”的body-parser只能做到第一點(diǎn)。

難受…

以前寫過的圖片文件上傳文章中用到了formidable模塊,其核心在于:

var form=new formidable.IncomingForm();

其后的form.uploadDir、field/end的監(jiān)聽 … 都是基于此。

好了這里我們要說的是缺點(diǎn):和body-parser一樣,formidable插件只能用來處理圖片格式,也是一大遺憾了。


于是,筆者找到了 multer中間件,希望它能“拯救者支離破碎的山河” (呵呵)

multer中間件的應(yīng)用之一:文件上傳

(c)npm install express multer
const express = require('express');
const bodyparser = require('body-parser');//解析post數(shù)據(jù)
const multer = require('multer'); //解析Post文件
const fs = require('fs');
const pathlib = require('path'); //解析文件路徑
 
var server = express();
 
var objMulter = multer({dest:'./www/upload'}); //用戶上傳文件存入dest目錄下
server.use(objMulter.any()); //處理任何用戶上傳的文件
 
//處理post文件數(shù)據(jù)
server.post('/',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('上傳失敗');
		}else{
			res.send('上傳成功');
		}
	});
});
server.listen(8081);

這里,用req.files頂替了req.body:因?yàn)閎ody中只能存放(文字)數(shù)鋸——這里如果用body-parser的話,看到的只是控制臺(tái)上顯示的文件名。

代碼中objMulter.any() 作用是“ 獲取所有數(shù)據(jù) ”;
any() 相對(duì)的還有一個(gè)single() ,它里面要指定一個(gè)參數(shù)——前端 里的name名!如本例中還可以這樣寫:

server.use(objMulter.single('f1'));

前端代碼如下 —— 文件提交,指定格式為multipart/form-data


	文件:
	

其實(shí)就是用了fs模塊中的rename(原路徑,新路徑,callback)方法,通過將文件強(qiáng)制更改存放路徑來達(dá)到“上傳文件”的目的。


今日份擴(kuò)展:
node中常用path模塊中的resolve方法來“指定文件”(注意第16/17行):

var http = require('http');
var fs = require('fs');
var path = require('path');

var server = http.createServer(function (req, res) {
    var method = req.method; // 獲取請(qǐng)求方法
    if (method === 'POST') { // 暫只關(guān)注 post 請(qǐng)求
        var dataStr = '';
        req.on('data', function (chunk) {
            // 接收到數(shù)據(jù),先存儲(chǔ)起來
            var chunkStr = chunk.toString()
            dataStr += chunkStr
        });
        req.on('end', function () {
            // 接收數(shù)據(jù)完成,將數(shù)據(jù)寫入文件
            var fileName = path.resolve(__dirname, 'post.txt');
            fs.writeFile(fileName, dataStr)
            res.end('OK');
        });
    }
});
server.listen(8081);

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“node.js使用multer中間件上傳文件的方法”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!


標(biāo)題名稱:node.js使用multer中間件上傳文件的方法
標(biāo)題路徑:http://weahome.cn/article/pppcgs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部