提供一个类似相册的功能模块,具体需求: 相册列表,新建相册,删除相册,点击进入相册,照片导入,照片删除,显示
我的做法是完全映射为文件的处理,即模拟一个简单浏览器端的文件管理系统(除导入外)
其中涉及到的知识: 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+ '张图片'
});
});
图片上传到静态资源文件目录,页面通过路径预加载预览