<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Nodejs進階:基于express+multer的文件上傳實例

        來源:懂視網 責編:小采 時間:2020-11-27 20:28:59
        文檔

        Nodejs進階:基于express+multer的文件上傳實例

        Nodejs進階:基于express+multer的文件上傳實例:概覽圖片上傳是web開發中經常用到的功能,node社區在這方面也有了相對完善的支持。常用的開源組件有multer、formidable等,借助這兩個開源組件,可以輕松搞定圖片上傳。本文主要講解以下內容,后續章節會對技術實現細節進行深入挖掘。基礎例子:借助expr
        推薦度:
        導讀Nodejs進階:基于express+multer的文件上傳實例:概覽圖片上傳是web開發中經常用到的功能,node社區在這方面也有了相對完善的支持。常用的開源組件有multer、formidable等,借助這兩個開源組件,可以輕松搞定圖片上傳。本文主要講解以下內容,后續章節會對技術實現細節進行深入挖掘。基礎例子:借助expr

        概覽

        圖片上傳是web開發中經常用到的功能,node社區在這方面也有了相對完善的支持。

        常用的開源組件有multer、formidable等,借助這兩個開源組件,可以輕松搞定圖片上傳。

        本文主要講解以下內容,后續章節會對技術實現細節進行深入挖掘。

        基礎例子:借助express、multer實現單圖、多圖上傳。

        常用API:獲取上傳的圖片的信息。

        進階使用:自定義保存的圖片路徑、名稱。

        環境初始化

        非常簡單,一行命令。

        npm install express multer multer --save

        每個示例下面,都有下面兩個文件

        ? upload-custom-filename git:(master) ? tree -L 1
        .
        ├── app.js # 服務端代碼,用來處理文件上傳請求
        ├── form.html # 前端頁面,用來上傳文件

        基礎例子:單圖上傳

        app.js。

        var fs = require('fs');
        var express = require('express');
        var multer = require('multer')
         
        var app = express();
        var upload = multer({ dest: 'upload/' });
         
        // 單圖上傳
        app.post('/upload', upload.single('logo'), function(req, res, next){
         res.send({ret_code: '0'});
        });
         
        app.get('/form', function(req, res, next){
         var form = fs.readFileSync('./form.html', {encoding: 'utf8'});
         res.send(form);
        });
         
        app.listen(3000);

        form.html。

        <form action="/upload-single" method="post" enctype="multipart/form-data">
         <h2>單圖上傳</h2>
         <input type="file" name="logo">
         <input type="submit" value="提交">
        </form>

        運行服務。

        node app.js

        訪問 http://127.0.0.1:3000/form ,選擇圖片,點擊“提交”,done。然后,你就會看到 upload 目錄下多了個圖片。

        基礎例子:多圖上傳

        代碼簡直不能更簡單,將前面的 upload.single('logo') 改成 upload.array('logo', 2) 就行。表示:同時支持2張圖片上傳,并且 name 屬性為 logo。

        app.js。

         
        var fs = require('fs');
        var express = require('express');
        var multer = require('multer')
         
        var app = express();
        var upload = multer({ dest: 'upload/' });
         
        // 多圖上傳
        app.post('/upload', upload.array('logo', 2), function(req, res, next){
         res.send({ret_code: '0'});
        });
         
        app.get('/form', function(req, res, next){
         var form = fs.readFileSync('./form.html', {encoding: 'utf8'});
         res.send(form);
        });
         
        app.listen(3000);

        form.html。

        <form action="/upload-multi" method="post" enctype="multipart/form-data">
         <h2>多圖上傳</h2>
         <input type="file" name="logos">
         <input type="file" name="logos">
         <input type="submit" value="提交">
        </form>

        同樣的測試步驟,不贅述。

        獲取上傳的圖片的信息

        很多時候,除了將圖片保存在服務器外,我們還需要做很多其他事情,比如將圖片的信息存到數據庫里。

        常用的信息比如原始文件名、文件類型、文件大小、本地保存路徑等。借助multer,我們可以很方便的獲取這些信息。

        還是單文件上傳的例子,此時,multer會將文件的信息寫到 req.file 上,如下代碼所示。

        app.js。

        var fs = require('fs');
        var express = require('express');
        var multer = require('multer')
         
        var app = express();
        var upload = multer({ dest: 'upload/' });
         
        // 單圖上傳
        app.post('/upload', upload.single('logo'), function(req, res, next){
         var file = req.file;
         
         console.log('文件類型:%s', file.mimetype);
         console.log('原始文件名:%s', file.originalname);
         console.log('文件大小:%s', file.size);
         console.log('文件保存路徑:%s', file.path);
         
         res.send({ret_code: '0'});
        });
         
        app.get('/form', function(req, res, next){
         var form = fs.readFileSync('./form.html', {encoding: 'utf8'});
         res.send(form);
        });
         
        app.listen(3000);

        form.html。

        <form action="/upload" method="post" enctype="multipart/form-data">
         <h2>單圖上傳</h2>
         <input type="file" name="logo">
         <input type="submit" value="提交">
        </form>

        啟動服務,上傳文件后,就會看到控制臺下打印出的信息。

        文件類型:image/png
        原始文件名:1.png
        文件大小:18379
        文件保存路徑:upload/b7e4bb22375695d92689e45b551873d9

        自定義文件上傳路徑、名稱

        有的時候,我們想要定制文件上傳的路徑、名稱,multer也可以方便的實現。

        自定義本地保存的路徑

        非常簡單,比如我們想將文件上傳到 my-upload 目錄下,修改下 dest 配置項就行。

        var upload = multer({ dest: 'upload/' });

        在上面的配置下,所有資源都是保存在同個目錄下。有時我們需要針對不同文件進行個性化設置,那么,可以參考下一小節的內容。

        自定義本地保存的文件名

        代碼稍微長一點,單同樣簡單。multer 提供了 storage 這個參數來對資源保存的路徑、文件名進行個性化設置。

        使用注意事項如下:

        destination:設置資源的保存路徑。注意,如果沒有這個配置項,默認會保存在 /tmp/uploads 下。此外,路徑需要自己創建。

        filename:設置資源保存在本地的文件名。

        app.js。

        var fs = require('fs');
        var express = require('express');
        var multer = require('multer')
         
        var app = express();
         
        var createFolder = function(folder){
         try{
         fs.accessSync(folder);
         }catch(e){
         fs.mkdirSync(folder);
         }
        };
         
        var uploadFolder = './upload/';
         
        createFolder(uploadFolder);
         
        // 通過 filename 屬性定制
        var storage = multer.diskStorage({
         destination: function (req, file, cb) {
         cb(null, uploadFolder); // 保存的路徑,備注:需要自己創建
         },
         filename: function (req, file, cb) {
         // 將保存文件名設置為 字段名 + 時間戳,比如 logo-1478521468943
         cb(null, file.fieldname + '-' + Date.now());
         }
        });
         
        // 通過 storage 選項來對 上傳行為 進行定制化
        var upload = multer({ storage: storage })
         
        // 單圖上傳
        app.post('/upload', upload.single('logo'), function(req, res, next){
         var file = req.file;
         res.send({ret_code: '0'});
        });
         
        app.get('/form', function(req, res, next){
         var form = fs.readFileSync('./form.html', {encoding: 'utf8'});
         res.send(form);
        });
         
        app.listen(3000);

        form.html。

        <form action="/upload" method="post" enctype="multipart/form-data">
         <h2>單圖上傳</h2>
         <input type="file" name="logo">
         <input type="submit" value="提交">
        </form>

        測試步驟不贅述,訪問一下就知道效果了。

        寫在后面

        本文對multer的基礎用法進行了介紹,并未涉及過多原理性的東西。俗話說 授人以漁不如授人以漁,在后續的章節里,會對文件上傳的細節進行挖掘,好讓讀者朋友對文件上傳加深進一步的認識。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Nodejs進階:基于express+multer的文件上傳實例

        Nodejs進階:基于express+multer的文件上傳實例:概覽圖片上傳是web開發中經常用到的功能,node社區在這方面也有了相對完善的支持。常用的開源組件有multer、formidable等,借助這兩個開源組件,可以輕松搞定圖片上傳。本文主要講解以下內容,后續章節會對技術實現細節進行深入挖掘。基礎例子:借助expr
        推薦度:
        標簽: js 示例 進階
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲一区二区三区亚瑟| 亚洲人成精品久久久久| 亚洲区视频在线观看| 久久精品国产影库免费看| 亚洲中久无码永久在线观看同| 色吊丝免费观看网站| 四虎1515hm免费国产| 久久亚洲AV成人无码国产最大| 日韩一品在线播放视频一品免费| 亚洲欧美精品午睡沙发| 国产国产人免费视频成69大陆| 日本亚洲欧美色视频在线播放 | 亚洲aⅴ无码专区在线观看 | 99爱在线观看免费完整版| 国产国拍亚洲精品mv在线观看| 成全视频在线观看免费| 亚洲国产精品自在在线观看 | 免费jjzz在在线播放国产| 精品成人一区二区三区免费视频 | 亚洲一区爱区精品无码| 久久免费精品视频| 亚洲欧洲尹人香蕉综合| 免费观看的毛片手机视频| 亚洲成AV人片高潮喷水| 狠狠色婷婷狠狠狠亚洲综合| 中国内地毛片免费高清| 久久久亚洲裙底偷窥综合| 成人片黄网站色大片免费| 爱情岛论坛亚洲品质自拍视频网站| 免费国产成人高清视频网站| 巨胸喷奶水www永久免费| 91亚洲精品第一综合不卡播放| 久久久久国色AV免费看图片| 免费的黄色的网站| 亚洲人成电影在在线观看网色| 成人A级毛片免费观看AV网站| 免费国产高清毛不卡片基地 | 国产国拍亚洲精品mv在线观看| 又黄又爽又成人免费视频| 老司机午夜性生免费福利 | 亚洲一区中文字幕|