You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
upload-file-backend/src/api/controllers/v1/path.controller.js

111 lines
3.0 KiB

// import httpStatus from 'http-status';
import fs from 'fs';
import { handler as ErrorHandel } from '../../middlewares/errors';
// import ApiException from '../../../common/utils/APIException';
import {
cdn as cdnConfig,
storage as storageConfig
} from '../../../config/vars';
import uploadAdapter from '../../../common/services/adapters/upload-adapter';
/**
* get file and folder
*
* @param {Formdata} file
*/
exports.get = (req, res, next) => {
try {
const user = req.user;
let path = `${storageConfig.uri}/${user.id}`;
// let path = storageConfig.uri;
if (req.body.path) {
path += req.body.path;
}
const listFile = [];
fs.readdir(path, (err, files) => {
if (files && files.length > 0) {
files.forEach((item) => {
listFile.push({
name: item,
path: `${cdnConfig.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) {
return ErrorHandel(ex, req, res, next);
}
};
/**
* get file and folder
*
* @param {Formdata} file
*/
exports.create = (req, res, next) => {
const user = req.user;
let dir = `${user.id}`;
console.log(dir);
if (req.body.path) {
dir += req.body.path;
}
if (req.body.name) {
dir += `/${req.body.name}`;
}
if (!fs.existsSync(dir)) {
uploadAdapter.createFolder({ path: dir });
}
return res.json({ code: 0, message: 'success' });
};
/**
* get file and folder
*
* @param {Formdata} file
*/
exports.update = (req, res, next) => {
try {
console.log(cdnConfig.uri, storageConfig.uri);
const oldPath = req.body.oldPath.replace(cdnConfig.uri, storageConfig.uri);
const newPath = req.body.newPath.replace(cdnConfig.uri, storageConfig.uri);
console.log('aaa', oldPath, newPath);
fs.rename(oldPath, newPath, (err) => {
if (err) {
console.log(err);
return res.status(400).json({ code: 400, message: 'lỗi' });
}
return res.json({ code: 0, message: 'success' });
});
return null;
} catch (ex) {
return ErrorHandel(ex, req, res, next);
}
};
exports.delete = (req, res, next) => {
try {
const path = req.body.path.replace(cdnConfig.uri, storageConfig.uri);
fs.rm(path, { recursive: true }, err => {
if (err) {
return res.status(400).json({ code: 400, message: 'lỗi', detail: err });
}
return res.json({ code: 0, message: 'success' });
});
return null;
} catch (ex) {
return ErrorHandel(ex, req, res, next);
}
};