提供一個類似相冊的功能模塊,具體需求: 相冊列表,新建相冊,刪除相冊,點擊進入相冊,照片導入,照片刪除,顯示
我的做法是完全映射爲文件的處理,即模擬一個簡單瀏覽器端的文件管理系統(除導入外)
其中涉及到的知識: 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+ '張圖片'
});
});
圖片上傳到靜態資源文件目錄,頁面通過路徑預加載預覽