1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      node.js使用multer中間件上傳文件的方法-創(chuàng)新互聯(lián)

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

      10年積累的成都做網(wǎng)站、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有諸城免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

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

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

      • 文件上傳

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

      難受…

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

      var form=new formidable.IncomingForm();

      其后的form.uploadDirfield/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)網(wǎng)站建設(shè)公司,,關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!


      本文名稱:node.js使用multer中間件上傳文件的方法-創(chuàng)新互聯(lián)
      分享鏈接:http://www.ef60e0e.cn/article/dgcipj.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        正镶白旗| 和平县| 沙坪坝区| 乌拉特后旗| 通江县| 大方县| 贵溪市| 鄂州市| 沁阳市| 邛崃市| 和静县| 鸡泽县| 永和县| 义马市| 马公市| 苍梧县| 盱眙县| 固阳县| 潜山县| 盖州市| 松原市| 门源| 辉南县| 阳信县| 香河县| 永康市| 二连浩特市| 开平市| 鹰潭市| 麟游县| 永丰县| 福建省| 彭泽县| 临泽县| 田林县| 仙游县| 大田县| 吴旗县| 红安县| 大关县| 阜城县|