Express 4+ 文件上傳

Express 4 + 做文件上傳的時候會出現(xiàn):req.files = undefined 的情況瓤帚。

原因是:body-parser模塊僅處理JSON和urlencoded表單提交体啰,而不是multipart。

我們可以選擇:
connect-busboy 或者 multer來處理滑绒。

1、connect-busboy

$ npm i connect-busboy --save

# app.js  中:
var busboy = require('connect-busboy');
app.use(busboy()); // 注意:這個一定要寫在所有的路由中間件之前。
app.use('/', index);

# upload_file.js 中:
exports.upload_file = function(req, res) {
    var fstream;
    req.pipe(req.busboy);
    req.busboy.on('file', function (fieldname, file, filename) {
      console.log("Uploading: " + filename);
      fstream = fs.createWriteStream(path.join(__dirname, '../public/upload') + filename);
      file.pipe(fstream);
      fstream.on('close', function () {
          cb(null, fstream);
      });
    });
}

2、multer

$ npm i multer --save

# /routes/index.js 路由中:
var express = require('express');
var router = express.Router();

var path = require('path');
var multer  = require('multer');
var fs = require('fs');
var upload = multer({ dest: path.join(__dirname, '../public/upload/') });

// 注意:1患朱、'upload_file'  對應于 form 表單中的 name 屬性值。
// 2炊苫、代碼 執(zhí)行完 upload.single('upload_file') 的時候裁厅,文件就已經(jīng)上傳了冰沙,但是沒有后綴名,得手動改一下
router.post('/upload_bgImg', upload.single('upload_file'), function(req, res) {
    var temp_path = req.file.path;
    var ext = '.' + req.file.originalname.split('.')[1];
    var target_path = req.file.path + ext;
    var _filename = req.file.filename + ext;
    var filePath = '/upload/' + _filename;
    console.log("Uploading: " + _filename);
    fs.rename(temp_path, target_path, function(err,data) {
      cb(null, { file_path: filePath });
    });
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末执虹,一起剝皮案震驚了整個濱河市拓挥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌袋励,老刑警劉巖侥啤,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異茬故,居然都是意外死亡盖灸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門磺芭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赁炎,“玉大人,你說我怎么就攤上這事钾腺♂愕妫” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵放棒,是天一觀的道長姻报。 經(jīng)常有香客問我,道長间螟,這世上最難降的妖魔是什么吴旋? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮寒亥,結(jié)果婚禮上邮府,老公的妹妹穿的比我還像新娘。我一直安慰自己溉奕,他們只是感情好褂傀,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著加勤,像睡著了一般仙辟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鳄梅,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天叠国,我揣著相機與錄音,去河邊找鬼戴尸。 笑死粟焊,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播项棠,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼悲雳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了香追?” 一聲冷哼從身側(cè)響起合瓢,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎透典,沒想到半個月后晴楔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡峭咒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年税弃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讹语。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡钙皮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出顽决,到底是詐尸還是另有隱情,我是刑警寧澤导匣,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布才菠,位于F島的核電站,受9級特大地震影響贡定,放射性物質(zhì)發(fā)生泄漏赋访。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一缓待、第九天 我趴在偏房一處隱蔽的房頂上張望蚓耽。 院中可真熱鬧,春花似錦旋炒、人聲如沸步悠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鼎兽。三九已至,卻和暖如春铣除,著一層夾襖步出監(jiān)牢的瞬間谚咬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工尚粘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留择卦,地道東北人。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像秉继,于是被迫代替她去往敵國和親祈噪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容