004 nodejs服務端文件上傳demo

一、安裝必要模塊

npm i express -s
npm i fs -s
npm i multer -s

二、demo核心代碼

// upload.js

var express = require('express');
var router = express.Router();

var fs = require('fs');
var multer = require('multer');



// 使用硬盤存儲模式設置存放接收到的文件的路徑以及文件名
var storage = multer.diskStorage({
    destination: function (req, file, cb) {
        // 接收到文件後輸出的保存路徑(若不存在則需要創建)
        if(file.mimetype=='application/pdf'){
            cb(null, 'upload/');
        }
    },
    filename: function (req, file, cb) {
        // 將保存文件名設置爲 時間戳 + 文件原始名,比如 151342376785-123.jpg
        cb(null, Date.now() + "-" + file.originalname);
        // res.end({res_code:'500'})
    }
});

// 創建文件夾
var createFolder = function (folder) {
    try {
        // 測試 path 指定的文件或目錄的用戶權限,我們用來檢測文件是否存在
        // 如果文件路徑不存在將會拋出錯誤"no such file or directory"
        fs.accessSync(folder);
    } catch (e) {
        // 文件夾不存在,以同步的方式創建文件目錄。
        fs.mkdirSync(folder);
    }
};

var uploadFolder = '../upload/';
createFolder(uploadFolder);

// 創建 multer 對象
var upload = multer({ storage: storage });





/* POST upload listing. */
router.post('/', upload.single('file'),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({
            res_code: '0',
            type: file.mimetype,
            originalname: file.originalname,
            size: file.size,
            path: file.path
        });
    });



// 導出模塊(在 app.js 中引入)
module.exports = router;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章