最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于nodejs+express(4.x+)實(shí)現(xiàn)文件上傳功能

 更新時間:2015年11月23日 11:39:17   作者:白色的海  
通過一段時間的查閱資料發(fā)現(xiàn)實(shí)現(xiàn)上傳的方式有:1.express中間件multer模塊2.connect-multiparty模塊(但現(xiàn)在 官方不推薦 )3.使用multiparty模塊實(shí)現(xiàn)4.使用formidable插件實(shí)現(xiàn),本文給大家介紹nodejs+express(4.x+)實(shí)現(xiàn)文件上傳功能,需要的朋友參考下

Nodejs是一個年輕的編程框架,充滿了活力和無限激情,一直都在保持著快速更新?;贜odejs的官方Web開發(fā)庫Express也在同步發(fā)展著,每年升級一個大版本,甚至對框架底層都做了大手術(shù)。在Express4時,替換掉中件間庫connect,而改用多個更細(xì)粒度的庫來取代。帶來的好處是明顯地,這些中間件能更自由的更新和發(fā)布,不會受到Express發(fā)布周期的影響;但問題也是很的棘手,不兼容于之前的版本,升級就意味著要修改代碼。

通過一段時間的查閱資料、摸索,我發(fā)現(xiàn)實(shí)現(xiàn)上傳的方式有:1.express中間件multer模塊(此效率最高,在express3.x原生支持,到了express4.x獨(dú)立成一個模塊了),2.connect-multiparty模塊(但現(xiàn)在 官方不推薦 ),3.使用multiparty模塊實(shí)現(xiàn)(此方法比較普遍),4.使用formidable插件實(shí)現(xiàn)(插件呢,就是簡單易懂);

最簡單的做法是通過“connect-multiparty”中間件實(shí)現(xiàn)上傳。

通過在項(xiàng)目中npm install connect-multiparty進(jìn)行安裝。

用法:

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打印出查看具體文件路徑。

只要在注釋的地方將臨時文件移動并重命名到實(shí)際目錄中即可完成上傳功能。

簡單。

官方地址:https://www.npmjs.com/package/connect-multiparty

但是官方不建議使用該中間件,建議直接使用“multiparty”,因?yàn)殄e誤處理比較麻煩。

下面就用“multiparty”實(shí)現(xiàn)一個版本。

1.使用express(版本是4.11.x)創(chuàng)建一個項(xiàng)目,采用默認(rèn)的jade作為模版引擎。

2.在項(xiàng)目目錄中,通過npm install multiparty進(jìn)行安裝必要組件。

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,實(shí)現(xiàn)上傳頁面和上傳響應(yīng)的后臺代碼。

 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對象,并配置上傳目標(biāo)路徑
  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;
    //重命名為真實(shí)文件名
    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+)實(shí)現(xiàn)文件上傳功能就全部介紹完了,希望對大家學(xué)習(xí)nodejs express相關(guān)知識有所幫助。

相關(guān)文章

  • 淺談Node.js ORM框架Sequlize之表間關(guān)系

    淺談Node.js ORM框架Sequlize之表間關(guān)系

    下面小編就為大家?guī)硪黄獪\談Node.js ORM框架Sequlize之表間關(guān)系。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 使用nvm進(jìn)行多個nodejs版本的統(tǒng)一管理

    使用nvm進(jìn)行多個nodejs版本的統(tǒng)一管理

    隨著前端項(xiàng)目的越來越多,不同項(xiàng)目使用的nodejs版本可能不一樣,導(dǎo)致在切換不同項(xiàng)目時需要更換不同的nodejs版本,非常麻煩,本次推薦使用nvm進(jìn)行多個nodejs版本的統(tǒng)一管理,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下
    2023-12-12
  • node.js事件循環(huán)機(jī)制及與js區(qū)別詳解

    node.js事件循環(huán)機(jī)制及與js區(qū)別詳解

    這篇文章主要為大家介紹了node.js事件循環(huán)機(jī)制及與js區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • nodejs根據(jù)ip數(shù)組在百度地圖中進(jìn)行定位

    nodejs根據(jù)ip數(shù)組在百度地圖中進(jìn)行定位

    本文主要介紹了nodejs根據(jù)ip數(shù)組在百度地圖中進(jìn)行定位的方法,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • Node版本升級和降級之node版本管理工具nvm詳解

    Node版本升級和降級之node版本管理工具nvm詳解

    nvm是管理node版本的工具,一個電腦中可以安裝多個node版本,當(dāng)我們想使用哪個版本就切換成哪個版本,而nvm則是提供切換node版本的工具,這篇文章主要給大家介紹了關(guān)于Node版本升級和降級之node版本管理工具nvm的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • node.js制作一個簡單的登錄攔截器

    node.js制作一個簡單的登錄攔截器

    本文給大家分享的是使用node.js制作一個簡單的登錄攔截的思路及代碼,有需要的小伙伴可以參考下
    2020-02-02
  • Node.js中出現(xiàn)未捕獲異常的處理方法

    Node.js中出現(xiàn)未捕獲異常的處理方法

    這篇文章主要給大家介紹了關(guān)于Node.js中出現(xiàn)未捕獲異常的處理方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 手把手帶你搭建一個node cli的方法示例

    手把手帶你搭建一個node cli的方法示例

    這篇文章主要介紹了手把手帶你搭建一個node cli的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • node如何實(shí)現(xiàn)簡單的腳手架淺析

    node如何實(shí)現(xiàn)簡單的腳手架淺析

    在工作中,需要開發(fā)一個腳手架,用于給相關(guān)用戶提供相關(guān)的開發(fā)便利性,下面這篇文章主要給大家介紹了關(guān)于node如何實(shí)現(xiàn)簡單的腳手架的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • node.js同步/異步文件讀寫-fs,Stream文件流操作實(shí)例詳解

    node.js同步/異步文件讀寫-fs,Stream文件流操作實(shí)例詳解

    這篇文章主要介紹了node.js同步/異步文件讀寫-fs,Stream文件流操作,結(jié)合實(shí)例形式詳細(xì)分析了node.js針對文件的同步/異步讀寫與文件流相關(guān)操作技巧,需要的朋友可以參考下
    2023-06-06

最新評論

炎陵县| 图们市| 铜鼓县| 乐山市| 句容市| 芮城县| 平潭县| 陇川县| 昌图县| 汝阳县| 武宁县| 溆浦县| 竹溪县| 乃东县| 同心县| 水城县| 象山县| 江川县| 东山县| 张家界市| 元氏县| 九江县| 敦化市| 德州市| 灌南县| 西峡县| 沙雅县| 福鼎市| 凉山| 三原县| 收藏| 耿马| 塘沽区| 阳原县| 东阳市| 广饶县| 海兴县| 凤凰县| 柞水县| 上杭县| 泽普县|