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

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

 更新時(shí)間:2015年11月23日 11:39:17   作者:白色的海  
通過(guò)一段時(shí)間的查閱資料發(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是一個(gè)年輕的編程框架,充滿了活力和無(wú)限激情,一直都在保持著快速更新?;贜odejs的官方Web開(kāi)發(fā)庫(kù)Express也在同步發(fā)展著,每年升級(jí)一個(gè)大版本,甚至對(duì)框架底層都做了大手術(shù)。在Express4時(shí),替換掉中件間庫(kù)connect,而改用多個(gè)更細(xì)粒度的庫(kù)來(lái)取代。帶來(lái)的好處是明顯地,這些中間件能更自由的更新和發(fā)布,不會(huì)受到Express發(fā)布周期的影響;但問(wèn)題也是很的棘手,不兼容于之前的版本,升級(jí)就意味著要修改代碼。

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

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

通過(guò)在項(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 
});

上傳后,上傳的文件會(huì)在臨時(shí)目錄中生成一個(gè)臨時(shí)文件,具體可將req.files打印出查看具體文件路徑。

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

簡(jiǎn)單。

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

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

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

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

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

3.修改views/index.jade,如下做一個(gè)簡(jiǎn)單的用于文件上傳的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è)面和上傳響應(yīng)的后臺(tái)代碼。

 var express = require('express');                                                                                                                      
  var router = express.Router();
  var multiparty = require('multiparty');
  var util = require('util');
  var fs = require('fs');
  /* 上傳頁(yè)面 */
  router.get('/', function(req, res, next) {
   res.render('index', { title: 'Express' });
 });
 /* 上傳*/
 router.post('/file/uploading', function(req, res, next){
  //生成multiparty對(duì)象,并配置上傳目標(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;

完成?;趎odejs+express(4.x+)實(shí)現(xiàn)文件上傳功能就全部介紹完了,希望對(duì)大家學(xué)習(xí)nodejs express相關(guān)知識(shí)有所幫助。

相關(guān)文章

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

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

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

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

    隨著前端項(xiàng)目的越來(lái)越多,不同項(xiàng)目使用的nodejs版本可能不一樣,導(dǎo)致在切換不同項(xiàng)目時(shí)需要更換不同的nodejs版本,非常麻煩,本次推薦使用nvm進(jìn)行多個(gè)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)行定位的方法,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • Node版本升級(jí)和降級(jí)之node版本管理工具nvm詳解

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

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

    node.js制作一個(gè)簡(jiǎn)單的登錄攔截器

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

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

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

    手把手帶你搭建一個(gè)node cli的方法示例

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

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

    在工作中,需要開(kāi)發(fā)一個(gè)腳手架,用于給相關(guān)用戶提供相關(guān)的開(kāi)發(fā)便利性,下面這篇文章主要給大家介紹了關(guān)于node如何實(shí)現(xiàn)簡(jiǎ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針對(duì)文件的同步/異步讀寫與文件流相關(guān)操作技巧,需要的朋友可以參考下
    2023-06-06

最新評(píng)論

林芝县| 南投市| 伊通| 武宁县| 顺昌县| 新密市| 巴中市| 武鸣县| 彭州市| 岑溪市| 池州市| 册亨县| 广水市| 沂水县| 江都市| 门头沟区| 石楼县| 乌兰浩特市| 漳平市| 铜陵市| 康定县| 武乡县| 舞阳县| 通海县| 宜良县| 旅游| 昌图县| 佳木斯市| 武宣县| 宁乡县| 郁南县| 兴化市| 石嘴山市| 呼图壁县| 南皮县| 和政县| 江油市| 桑植县| 安阳县| 鞍山市| 双鸭山市|