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+ '张图片'
    });
});


图片上传到静态资源文件目录,页面通过路径预加载预览



你可能感兴趣的:(Js)