nodejs 實現(xiàn)文件上傳

前端頁面結(jié)構(gòu)

<form method="post" action="http://localhost:8080/uploadReport" enctype="multipart/form-data">
       <input type="file" name="filename"/> //
       <input type="submit" value="提交"/>
   </form>
TIM截圖20180613154019.png

node 服務(wù)端

需用到connect-multiparty 模塊

npm install connect-multiparty --save

完整代碼:

var express = require('express');
var router = express.Router();
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
router.route('/uploadReport').post(multipartMiddleware,function(req, res) {
   try{
     console.log('/uploadReport',req.files);
      let originalFilename = req.files.filename.originalFilename;//
      let extName = "";
      //判斷文件是否具有擴展名
      if(originalFilename.lastIndexOf(".") != -1){
         extName = originalFilename.slice(originalFilename.lastIndexOf("."));//獲取文件擴展名
      }
      let fileName =Math.round(Math.random()*10000) + extName;//文件重命名
      var source = fs.createReadStream(req.files.filename.path);//讀取臨時文件流
      var output = path.join(__dirname,"../public/",fileName);//

      var dest = fs.createWriteStream(output);
      source.pipe(dest);
      source.on('end', function() {
  
         fs.unlinkSync(req.files.filename.path);
         res.send("HTTP_SUCCESS:");
      }); 
      source.on('error', function(err) {
      console.log('文件復(fù)制出錯',err)
      });
   }catch(e){
      console.log('uploadReport',e)
   }
})

控制臺打印一下req.files:

{ 
           filename:
           { 
                fieldName: 'filename', // 文件名
                originalFilename: 'f739f32795f756ba4f1739fffd61a372.jpg',//原始文件名
                path:
                   'C:\\Users\\dell\\AppData\\Local\\Temp\\mOqRkZgc8gpjDpXDe6Xn_x8Q.jpg',
                headers:
                    { 
                        'content-disposition':'form-data; name="filename"; filename="f739f32795f756ba4f1739fffd61a372.jpg"',
                        'content-type': 'image/jpeg'
                    },
                size: 20562,//文件大小
                name: 'f739f32795f756ba4f1739fffd61a372.jpg',
                type: 'image/jpeg' //文件類型
           } 
       }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舰始,一起剝皮案震驚了整個濱河市崇棠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌丸卷,老刑警劉巖易茬,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異及老,居然都是意外死亡抽莱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門骄恶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來食铐,“玉大人,你說我怎么就攤上這事僧鲁∨吧耄” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵寞秃,是天一觀的道長斟叼。 經(jīng)常有香客問我,道長春寿,這世上最難降的妖魔是什么朗涩? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮绑改,結(jié)果婚禮上谢床,老公的妹妹穿的比我還像新娘。我一直安慰自己厘线,他們只是感情好识腿,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著造壮,像睡著了一般渡讼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天成箫,我揣著相機與錄音展箱,去河邊找鬼。 笑死伟众,一個胖子當(dāng)著我的面吹牛析藕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凳厢,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼账胧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了先紫?” 一聲冷哼從身側(cè)響起治泥,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎遮精,沒想到半個月后居夹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡本冲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年准脂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片檬洞。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡狸膏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出添怔,到底是詐尸還是另有隱情湾戳,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布广料,位于F島的核電站砾脑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏艾杏。R本人自食惡果不足惜韧衣,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望糜颠。 院中可真熱鬧汹族,春花似錦、人聲如沸其兴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽元旬。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間匀归,已是汗流浹背坑资。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留穆端,地道東北人袱贮。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像体啰,于是被迫代替她去往敵國和親攒巍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355

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

  • 文件上傳需要解析文件荒勇,之前我們解析數(shù)據(jù)使用body-parser柒莉,解析文件可以用multer。body-parse...
    super靜_jingjing閱讀 977評論 0 1
  • 個人入門學(xué)習(xí)用筆記沽翔、不過多作為參考依據(jù)兢孝。如有錯誤歡迎斧正 目錄 簡書好像不支持錨點、復(fù)制搜索(反正也是寫給我自己看...
    kirito_song閱讀 2,472評論 1 37
  • ## 前端開發(fā)的工具 ### 編輯器: 1. 輕量級的仅偎,依靠插件:sublime跨蟹;atom(github);vs ...
    浪流兒閱讀 3,194評論 0 2
  • 假期回來上班第一天橘沥,也是忙碌的一天窗轩,需要好好梳理,調(diào)整心態(tài)威恼,為之努力奮斗品姓! 今天是親愛的阿貓26歲生日,很遺憾不能...
    聶一一閱讀 94評論 0 0
  • 織女傳 根據(jù)民間故事《牛郎織女》改編 2017涂沐作品 楔子 這個故事里的牛郎箫措,并不是一個職業(yè)代稱腹备,牛郎也...
    kevintumu閱讀 2,512評論 3 10