|
|
|
@ -12,6 +12,8 @@ import { |
|
|
|
|
storage as storageConfig |
|
|
|
|
} from '../../../config/vars'; |
|
|
|
|
import uploadAdapter from '../../../common/services/adapters/upload-adapter'; |
|
|
|
|
import { cloneDeep, forEach } from 'lodash'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* get file and folder |
|
|
|
@ -23,12 +25,11 @@ exports.get = (req, res, next) => { |
|
|
|
|
const user = req.user; |
|
|
|
|
|
|
|
|
|
let path = `${storageConfig.uri}/${user.id}`; |
|
|
|
|
// let path = storageConfig.uri;
|
|
|
|
|
if (req.body.path) { |
|
|
|
|
path += req.body.path; |
|
|
|
|
} |
|
|
|
|
// console.log(path);
|
|
|
|
|
const listFile = []; |
|
|
|
|
|
|
|
|
|
fs.readdir(path, (err, files) => { |
|
|
|
|
if (files && files.length > 0) { |
|
|
|
|
files.forEach((item) => { |
|
|
|
@ -44,6 +45,24 @@ exports.get = (req, res, next) => { |
|
|
|
|
data: listFile |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
// test local
|
|
|
|
|
// fs.readdir(path, (err, files) => {
|
|
|
|
|
// if (files && files.length > 0) {
|
|
|
|
|
// files.forEach((item) => {
|
|
|
|
|
// listFile.push({
|
|
|
|
|
// name: item,
|
|
|
|
|
// path: `${storageConfig.uri}/${user.id}${req.body.path}/${item}`,
|
|
|
|
|
// isFolder: fs.lstatSync(`${storageConfig.uri}/${user.id}/${req.body.path}/${item}`).isDirectory()
|
|
|
|
|
// });
|
|
|
|
|
// });
|
|
|
|
|
// }
|
|
|
|
|
// return res.json({
|
|
|
|
|
// code: 0,
|
|
|
|
|
// data: listFile
|
|
|
|
|
// });
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return null; |
|
|
|
|
/** resize image uploaded */ |
|
|
|
|
} catch (ex) { |
|
|
|
@ -58,14 +77,13 @@ exports.get = (req, res, next) => { |
|
|
|
|
*/ |
|
|
|
|
exports.create = (req, res, next) => { |
|
|
|
|
const user = req.user; |
|
|
|
|
|
|
|
|
|
let dir = `${user.id}`; |
|
|
|
|
console.log(dir); |
|
|
|
|
const name_folder = cloneDeep(req.body.name).trim(); |
|
|
|
|
if (req.body.path) { |
|
|
|
|
dir += req.body.path; |
|
|
|
|
} |
|
|
|
|
if (req.body.name) { |
|
|
|
|
dir += `/${req.body.name}`; |
|
|
|
|
dir += `/${name_folder}`; |
|
|
|
|
} |
|
|
|
|
if (!fs.existsSync(dir)) { |
|
|
|
|
uploadAdapter.createFolder({ path: dir }); |
|
|
|
@ -123,16 +141,24 @@ exports.download = (req, res, next) => { |
|
|
|
|
try { |
|
|
|
|
const user = req.user; |
|
|
|
|
const namefile = `${user.name}-${Date.now()}.zip`; |
|
|
|
|
const dir = `${storageConfig.uri}/${user.id}/${namefile}`; |
|
|
|
|
const dir = `${storageConfig.uri}/download/${user.id}/${namefile}`; |
|
|
|
|
const folder = `${storageConfig.uri}/download/${user.id}`; |
|
|
|
|
|
|
|
|
|
deleteFolderRecursive(folder); |
|
|
|
|
const output = fs.createWriteStream(dir); |
|
|
|
|
const archive = archiver('zip', { |
|
|
|
|
zlib: { level: 9 } // Sets the compression level.
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
archive.pipe(output); |
|
|
|
|
if (req.body.data) { |
|
|
|
|
req.body.data.forEach((e) => { |
|
|
|
|
const path = e.path.replace(cdnConfig.uri, storageConfig.uri).replace(/ /g, '%20'); |
|
|
|
|
// const path = e.path.replace(cdnConfig.uri, storageConfig.uri).replace(/ /g, '%20');
|
|
|
|
|
const path = e.path.replace(cdnConfig.uri, storageConfig.uri); |
|
|
|
|
// const download = path.split("/");
|
|
|
|
|
// download.splice( download.indexOf(`${user.id}`), 0, "download");
|
|
|
|
|
// const final_path = download.join("/");
|
|
|
|
|
if (e.isFolder) { |
|
|
|
|
archive.directory(path, e.name); |
|
|
|
|
} else { |
|
|
|
@ -141,7 +167,6 @@ exports.download = (req, res, next) => { |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
archive.finalize(); |
|
|
|
|
|
|
|
|
|
return res.json({ |
|
|
|
|
code: 0, |
|
|
|
|
data: { |
|
|
|
@ -194,3 +219,21 @@ exports.deleteMultiple = (req, res, next) => { |
|
|
|
|
return ErrorHandel(ex, req, res, next); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function deleteFolderRecursive(folderPath) { |
|
|
|
|
let files = []; |
|
|
|
|
if (fs.existsSync(folderPath)) { |
|
|
|
|
files = fs.readdirSync(folderPath); |
|
|
|
|
files.forEach((file) => { |
|
|
|
|
const currentPath = path.join(folderPath, file); |
|
|
|
|
if (fs.lstatSync(currentPath).isDirectory()) { |
|
|
|
|
deleteFolderRecursive(currentPath); |
|
|
|
|
} else { |
|
|
|
|
fs.unlinkSync(currentPath); |
|
|
|
|
console.log('Deleted file:', currentPath); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|