nodejs中圖片上傳,讀取,預覽

提供一個類似相冊的功能模塊,具體需求: 相冊列表,新建相冊,刪除相冊,點擊進入相冊,照片導入,照片刪除,顯示

我的做法是完全映射爲文件的處理,即模擬一個簡單瀏覽器端的文件管理系統(除導入外)


其中涉及到的知識: 1.nodejs文件操作(fs模塊) 2.nodejs文件上傳


nodejs文件操作

讀取文件夾:
    fs.readdir(dest, function(err, files){
        if (err) {
            res.json({
                code: 2000,
                desc: 'error'
            });
        }
        res.json({
            code: 1000,
            desc: 'success',
            files: files
        });
    });

生成文件夾:
     fs.exists(dest+'/'+dirname, function(exists) {  
        if(!exists) {
            fs.mkdir(dest+'/'+dirname)
            res.json({
                code: 1000,
                desc: 'success'
            })
        } else {
            res.json({
                code: 2000,
                desc: '相冊已存在'
            })
        }
    });


刪除文件/目錄:
    function deleteall(path) {
        var files = [];
        if(fs.existsSync(path)) {
            files = fs.readdirSync(path);
            files.forEach(function(file, index) {
                var curPath = path + "/" + file;
                if(fs.statSync(curPath).isDirectory()) {
                    deleteall(curPath);
                } else {  
                    fs.unlinkSync(curPath);
                }
            });
            fs.rmdirSync(path);
        }
    };


nodejs文件上傳


nodejs 官方推薦使用multer包來完成文件上傳:
var fs = require('fs')
var multer = require("multer");
var dest = './public/pictures/'
var upload = multer({ dest: dest })

router.post('/import', upload.array('images', 12), function(req, res, next) {
    var files = req.files
    var dir = req.body.dirname
    for(var i = 0; i < files.length; i++) {
        var file = files[i]
        fs.renameSync(file.destination+'/'+ file.filename, file.destination+'/'+dir+'/'+ file.originalname);
    }
    res.json({
        code: 1000,
        desc: '成功導入'+files.length+ '張圖片'
    });
});


圖片上傳到靜態資源文件目錄,頁面通過路徑預加載預覽



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