|
@@ -20,6 +20,8 @@ const msal = require('@azure/msal-node');
|
|
|
const FormData = require("form-data");
|
|
|
const {pool, sql} = require('./config/sql.js');
|
|
|
const { v4: uuidv4 } = require('uuid');
|
|
|
+const {init} = require('./ext.js');
|
|
|
+let POSSIBLE_EXT;
|
|
|
|
|
|
const apiUrl = 'http://192.168.20.99:5050';
|
|
|
|
|
@@ -27,9 +29,6 @@ const createErrors = require('http-errors');
|
|
|
|
|
|
const gateWayKey = process.env.GATE_WAY_KEY;
|
|
|
|
|
|
-const errorMap = new Map([
|
|
|
-
|
|
|
-]);
|
|
|
|
|
|
const msalConfig = {
|
|
|
auth: {
|
|
@@ -142,6 +141,7 @@ serverApp.use(bodyParser.json());
|
|
|
serverApp.get("/tab",
|
|
|
// isAuthenticated,
|
|
|
async function (req, res, next) {
|
|
|
+ POSSIBLE_EXT = await init();
|
|
|
res.sendFile(globalPath.join(__dirname, "/views/hello.html"),
|
|
|
// { idTokenClaims: req.session.account.idTokenClaims }
|
|
|
);
|
|
@@ -261,14 +261,26 @@ serverApp.get("/post-redirect",
|
|
|
serverApp.post("/getGroupList", async function (req, res, next) {
|
|
|
try {
|
|
|
// throw new Error('Error');
|
|
|
- const oneDrive = await getFetch(endPoint + "/me/drive/root", req.session.accessToken);
|
|
|
- const sharePointIds = await getFetch(endPoint + "/me/drive/SharePointIds", req.session.accessToken);
|
|
|
- // const publicTeam = await getFetch(endPoint + "/groups?$filter=groupTypes/any(c:c+eq+'Unified')", req.session.accessToken);
|
|
|
- const graphResponse = await getFetch(endPoint + "/me/joinedTeams", req.session.accessToken);
|
|
|
- const sites = await getFetch(endPoint + "/sites/root", req.session.accessToken);
|
|
|
- const sitesSharePoint = await getFetch(endPoint + "/sites/root/SharePointIds", req.session.accessToken);
|
|
|
-
|
|
|
- // const public = publicTeam.value;
|
|
|
+ // const oneDrive = await getFetch(endPoint + "/me/drive/root", req.session.accessToken);
|
|
|
+ // const sharePointIds = await getFetch(endPoint + "/me/drive/SharePointIds", req.session.accessToken);
|
|
|
+ // // const publicTeam = await getFetch(endPoint + "/groups?$filter=groupTypes/any(c:c+eq+'Unified')", req.session.accessToken);
|
|
|
+ // const graphResponse = await getFetch(endPoint + "/me/joinedTeams", req.session.accessToken);
|
|
|
+ // const sites = await getFetch(endPoint + "/sites/root", req.session.accessToken);
|
|
|
+ // const sitesSharePoint = await getFetch(endPoint + "/sites/root/SharePointIds", req.session.accessToken);
|
|
|
+ const options = getOptions(req.session.accessToken);
|
|
|
+ const uriArr = [
|
|
|
+ axios.get(endPoint + "/me/drive/root", options),
|
|
|
+ axios.get(endPoint + "/me/drive/SharePointIds", options),
|
|
|
+ axios.get(endPoint + "/me/joinedTeams", options),
|
|
|
+ axios.get(endPoint + "/sites/root", options),
|
|
|
+ axios.get(endPoint + "/sites/root/SharePointIds", options),
|
|
|
+ ]
|
|
|
+ const result = await Promise.all(uriArr);
|
|
|
+ const oneDrive = result[0].data;
|
|
|
+ const sharePointIds = result[1].data;
|
|
|
+ const graphResponse = result[2].data;
|
|
|
+ const sites = result[3].data;
|
|
|
+ const sitesSharePoint = result[4].data;
|
|
|
const teams = graphResponse.value;
|
|
|
oneDrive.sharePoint = sharePointIds;
|
|
|
sites.sharePoint = sitesSharePoint;
|
|
@@ -650,7 +662,71 @@ serverApp.post('/api/check-name',
|
|
|
res.json(error);
|
|
|
}
|
|
|
}
|
|
|
-})
|
|
|
+});
|
|
|
+
|
|
|
+async function uploadDrive(options, folder, siteId, path, res) {
|
|
|
+ const startTime = new Date();
|
|
|
+ if (folder) {
|
|
|
+ if (!Array.isArray(folder)) {
|
|
|
+ folder = [folder];
|
|
|
+ }
|
|
|
+ for (let item of folder) {
|
|
|
+ const fileInfo = JSON.parse(item);
|
|
|
+
|
|
|
+ const param = {
|
|
|
+ name: fileInfo.name,
|
|
|
+ folder: {},
|
|
|
+ '@microsoft.graph.conflictBehavior': 'rename'
|
|
|
+ };
|
|
|
+
|
|
|
+ let folderPath = '';
|
|
|
+ if (fileInfo.path) {
|
|
|
+ folderPath = fileInfo.path;
|
|
|
+ if (!path.includes(':')) {
|
|
|
+ folderPath = ":" + folderPath;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let uri = endPoint + "/sites/"+ siteId + path + folderPath;
|
|
|
+ try {
|
|
|
+ const result = await new Promise (async (resolve, reject)=>{
|
|
|
+ try {
|
|
|
+ const sitesInfo = await axios.get(uri, options);
|
|
|
+ resolve(sitesInfo.data);
|
|
|
+ }
|
|
|
+ catch(error) {
|
|
|
+ if (error.response) {
|
|
|
+ reject(error.response);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ reject(error);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }).then(async (result)=>{
|
|
|
+ return await new Promise(async (resolve, reject)=>{
|
|
|
+ try {
|
|
|
+ const uploadFolder = await axios.post(endPoint + "/sites/"+ siteId +"/drive/items/" + result.id +"/children", param, options);
|
|
|
+ resolve(uploadFolder.data);
|
|
|
+ }
|
|
|
+ catch(error){
|
|
|
+ if (error.response) {
|
|
|
+ reject(error.response);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ reject(error);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ catch(error) {
|
|
|
+ return res.json({success:'F', message: '요청하신 파일 업로드 중 오류가 발생하였습니다.<br>' + getErrorMessage(error)});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ const makeFolderTime = new Date();
|
|
|
+
|
|
|
+ console.log('폴더 시작 시간 :', startTime.toLocaleString(), ', 폴더 종료 시간 :', makeFolderTime.toLocaleString(), ', 소요 시간 :', timeCheck(startTime, makeFolderTime));
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
serverApp.post('/api/upload', upload.array('file'),
|
|
|
// isAuthenticated,
|
|
@@ -664,130 +740,133 @@ serverApp.post('/api/upload', upload.array('file'),
|
|
|
// const folderResult = await makeFolder(options, folder, siteId, path, file_path, files, req.session);
|
|
|
// console.log(folderResult);
|
|
|
// return res.json(folderResult);
|
|
|
- if (folder) {
|
|
|
- if (!Array.isArray(folder)) {
|
|
|
- folder = [folder];
|
|
|
- }
|
|
|
+ // if (folder) {
|
|
|
+ // if (!Array.isArray(folder)) {
|
|
|
+ // folder = [folder];
|
|
|
+ // }
|
|
|
+ // for (let item of folder) {
|
|
|
+ // const fileInfo = JSON.parse(item);
|
|
|
+
|
|
|
+ // const param = {
|
|
|
+ // name: fileInfo.name,
|
|
|
+ // folder: {},
|
|
|
+ // '@microsoft.graph.conflictBehavior': 'rename'
|
|
|
+ // };
|
|
|
+
|
|
|
+ // let folderPath = '';
|
|
|
+ // if (fileInfo.path) {
|
|
|
+ // folderPath = fileInfo.path;
|
|
|
+ // if (!path.includes(':')) {
|
|
|
+ // folderPath = ":" + folderPath;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // let uri = endPoint + "/sites/"+ siteId + path + folderPath;
|
|
|
+ // try {
|
|
|
+ // const result = await new Promise (async (resolve, reject)=>{
|
|
|
+ // try {
|
|
|
+ // const sitesInfo = await axios.get(uri, options);
|
|
|
+ // resolve(sitesInfo.data);
|
|
|
+ // }
|
|
|
+ // catch(error) {
|
|
|
+ // if (error.response) {
|
|
|
+ // reject(error.response);
|
|
|
+ // }
|
|
|
+ // else {
|
|
|
+ // reject(error);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }).then(async (result)=>{
|
|
|
+ // return await new Promise(async (resolve, reject)=>{
|
|
|
+ // try {
|
|
|
+ // const uploadFolder = await axios.post(endPoint + "/sites/"+ siteId +"/drive/items/" + result.id +"/children", param, options);
|
|
|
+ // resolve(uploadFolder.data);
|
|
|
+ // }
|
|
|
+ // catch(error){
|
|
|
+ // if (error.response) {
|
|
|
+ // reject(error.response);
|
|
|
+ // }
|
|
|
+ // else {
|
|
|
+ // reject(error);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ // }).catch((error)=>{
|
|
|
+ // console.log(error);
|
|
|
+ // })
|
|
|
+ // }
|
|
|
+ // catch(error) {
|
|
|
+ // return res.json({success:'F', message: '요청하신 파일 업로드 중 오류가 발생하였습니다.<br>' + getErrorMessage(error)});
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // const makeFolderTime = new Date();
|
|
|
+
|
|
|
+ // let betweenTime = makeFolderTime - startTime;
|
|
|
+ // if (betweenTime > 60000) {
|
|
|
+ // betweenTime = (betweenTime/1000/60) + ' 분';
|
|
|
+ // }
|
|
|
+ // else {
|
|
|
+ // betweenTime = (betweenTime/1000) + ' 초';
|
|
|
+ // }
|
|
|
+ // console.log('폴더 시작 시간 :', startTime.toLocaleString(), ', 폴더 종료 시간 :', makeFolderTime.toLocaleString(), ', 소요 시간 :', betweenTime);
|
|
|
+ // }
|
|
|
+ await uploadDrive(options, folder, siteId, path, res);
|
|
|
|
|
|
- for (let item of folder) {
|
|
|
- const fileInfo = JSON.parse(item);
|
|
|
-
|
|
|
- const param = {
|
|
|
- name: fileInfo.name,
|
|
|
- folder: {},
|
|
|
- '@microsoft.graph.conflictBehavior': 'rename'
|
|
|
- };
|
|
|
-
|
|
|
- let folderPath = '';
|
|
|
- if (fileInfo.path) {
|
|
|
- folderPath = fileInfo.path;
|
|
|
- if (!path.includes(':')) {
|
|
|
- folderPath = ":" + folderPath;
|
|
|
- }
|
|
|
- }
|
|
|
- let uri = endPoint + "/sites/"+ siteId + path + folderPath;
|
|
|
- try {
|
|
|
- const result = await new Promise (async (resolve, reject)=>{
|
|
|
- try {
|
|
|
- const sitesInfo = await axios.get(uri, options);
|
|
|
- resolve(sitesInfo.data);
|
|
|
- }
|
|
|
- catch(error) {
|
|
|
- if (error.response) {
|
|
|
- reject(error.response);
|
|
|
- }
|
|
|
- else {
|
|
|
- reject(error);
|
|
|
- }
|
|
|
- }
|
|
|
- }).then(async (result)=>{
|
|
|
- return await new Promise(async (resolve, reject)=>{
|
|
|
- try {
|
|
|
- const uploadFolder = await axios.post(endPoint + "/sites/"+ siteId +"/drive/items/" + result.id +"/children", param, options);
|
|
|
- resolve(uploadFolder.data);
|
|
|
- }
|
|
|
- catch(error){
|
|
|
- if (error.response) {
|
|
|
- reject(error.response);
|
|
|
- }
|
|
|
- else {
|
|
|
- reject(error);
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
- }).catch((error)=>{
|
|
|
- console.log(error);
|
|
|
- })
|
|
|
- }
|
|
|
- catch(error) {
|
|
|
- return res.json({success:'F', message: '요청하신 파일 업로드 중 오류가 발생하였습니다.<br>' + getErrorMessage(error)});
|
|
|
- }
|
|
|
- }
|
|
|
- const makeFolderTime = new Date();
|
|
|
-
|
|
|
- let betweenTime = makeFolderTime - startTime;
|
|
|
- if (betweenTime > 60000) {
|
|
|
- betweenTime = (betweenTime/1000/60) + ' 분';
|
|
|
- }
|
|
|
- else {
|
|
|
- betweenTime = (betweenTime/1000) + ' 초';
|
|
|
+ const promiseArray = [];
|
|
|
+ const labelPromiseArray = [];
|
|
|
+ const fileWriteArray = [];
|
|
|
+ const possibleExt = POSSIBLE_EXT;
|
|
|
+ const {supported_file_ext, protected_file_ext} = possibleExt;
|
|
|
+ let supportedArr = [];
|
|
|
+ if (supported_file_ext && protected_file_ext) {
|
|
|
+ supportedArr = supported_file_ext.split(';');
|
|
|
+ if (!supportedArr[supportedArr.length - 1]) {
|
|
|
+ supportedArr.splice(supportedArr.length - 1);
|
|
|
}
|
|
|
- console.log('폴더 시작 시간 :', startTime.toLocaleString(), ', 폴더 종료 시간 :', makeFolderTime.toLocaleString(), ', 소요 시간 :', betweenTime);
|
|
|
-
|
|
|
}
|
|
|
|
|
|
- const promiseArray = [];
|
|
|
if (files && files.length > 0) {
|
|
|
let beforeUri = '';
|
|
|
let beforeItemId = '';
|
|
|
- const possibleExt = await getPossibleExt();
|
|
|
+
|
|
|
for (let idx in files) {
|
|
|
const file = files[idx];
|
|
|
//const fileName = file.originalname;
|
|
|
//let filePath = req.body[ fileName + "_path"];
|
|
|
file.originalname = Buffer.from(file.originalname, 'ascii').toString('utf8');
|
|
|
let originName = file.originalname;
|
|
|
- if (originName && possibleExt) {
|
|
|
+ if (originName) {
|
|
|
const ext = globalPath.extname(originName);
|
|
|
|
|
|
- const {supported_file_ext, protected_file_ext} = possibleExt.data;
|
|
|
-
|
|
|
- if (supported_file_ext && protected_file_ext) {
|
|
|
-
|
|
|
- let supportedArr = supported_file_ext.split(';');
|
|
|
-
|
|
|
- if (!supportedArr[supportedArr.length - 1]) {
|
|
|
- supportedArr.splice(supportedArr.length - 1);
|
|
|
- }
|
|
|
-
|
|
|
- if (!supportedArr.includes(ext)) {
|
|
|
- return res.json({success:'F', message: '파일명 : ' + originName
|
|
|
- +'<br>해당 파일은 업로드 불가 파일입니다. 다시 시도해주세요.<br>가능 확장자 :'
|
|
|
- + JSON.stringify(supportedArr)});
|
|
|
- }
|
|
|
+ if (supportedArr.length > 0 && !supportedArr.includes(ext)) {
|
|
|
+ return res.json({success:'F', message: '파일명 : ' + originName
|
|
|
+ +'<br>해당 파일은 업로드 불가 파일입니다. 다시 시도해주세요.<br>가능 확장자 :'
|
|
|
+ + JSON.stringify(supportedArr)});
|
|
|
+ }
|
|
|
+
|
|
|
const uuid = uuidv4();
|
|
|
const realFileName = uuid + ext;
|
|
|
- fs.writeFileSync('Z:/Source/' + realFileName, file.buffer);
|
|
|
+ fileWriteArray.push(new Promise((resolve, reject) => {
|
|
|
+ const data = fs.writeFileSync('Z:/Source/' + realFileName, file.buffer)
|
|
|
+ resolve({
|
|
|
+ data
|
|
|
+ })
|
|
|
+ }));
|
|
|
+
|
|
|
+ //fileWriteArray.push(['Z:/Source/' + realFileName, file.buffer]);
|
|
|
+ //fs.writeFileSync('Z:/Source/' + realFileName, file.buffer);
|
|
|
+ const base64Data = Buffer.from(file.buffer).toString('base64');
|
|
|
const param = {
|
|
|
apiKey: gateWayKey,
|
|
|
email: req.session.account.idTokenClaims.email,
|
|
|
dispFileName: originName,
|
|
|
- realFileName : realFileName,
|
|
|
aipGuid: "878173ae-cc36-4881-af57-604af868314c",
|
|
|
- comment: "",
|
|
|
+ comment: "set-label",
|
|
|
+ fileData: base64Data,
|
|
|
}
|
|
|
-
|
|
|
- try {
|
|
|
- const result = await axios.post(apiUrl + '/api/v1/file/set-label', param);
|
|
|
- if (result.data.statusCode !== 200 && result.data.result.errorCode) {
|
|
|
- console.log(result.data.result);
|
|
|
- return res.json({success:'F', message: '파일 레이블 작업 중 오류가 발생했습니다.<br>에러 : ' + result.data.result.errorMessage});
|
|
|
- }
|
|
|
- }
|
|
|
- catch(error) {
|
|
|
- return res.json({success:'F', message: '파일 레이블 작업 중 오류가 발생했습니다.<br>에러 : ' + JSON.stringify(error.message)});
|
|
|
- }
|
|
|
- const labelFile = fs.readFileSync('Z:/Source/' + realFileName);
|
|
|
+ // console.log(realFileName);
|
|
|
+ // console.log(param);
|
|
|
+ // labelPromiseArray.push(axios.post(apiUrl + '/api/v1/file/set-label', param));
|
|
|
+ labelPromiseArray.push(axios.post(apiUrl + '/api/v1/stream/set-label', param));
|
|
|
|
|
|
let formatPath = '';
|
|
|
|
|
@@ -800,7 +879,7 @@ serverApp.post('/api/upload', upload.array('file'),
|
|
|
let itemId = '';
|
|
|
|
|
|
const uri = endPoint + "/sites/"+ siteId + path + formatPath;
|
|
|
- if (beforeUri === uri) {
|
|
|
+ if (beforeUri === uri) {
|
|
|
itemId = beforeItemId;
|
|
|
}
|
|
|
else {
|
|
@@ -815,97 +894,187 @@ serverApp.post('/api/upload', upload.array('file'),
|
|
|
res.json({success:'F', message: '파일 업로드 작업 중 오류가 발생했습니다.<br>에러 : ' + JSON.stringify(error.message)});
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- promiseArray.push(axios.put(endPoint + "/sites/"+ siteId +"/drive/items/"+itemId+':/'+originName+':/content', labelFile, options));
|
|
|
- // console.log(labelFile);
|
|
|
- // const labelData = await setLabelFiles(param);
|
|
|
- // const fileData = Buffer.from(file.buffer).toString('base64');
|
|
|
- // const param = {
|
|
|
- // apiKey: gateWayKey,
|
|
|
- // email: req.session.account.idTokenClaims.email,
|
|
|
- // dispFileName: originName,
|
|
|
- // aipGuid: "878173ae-cc36-4881-af57-604af868314c",
|
|
|
- // comment: "",
|
|
|
- // fileData: fileData
|
|
|
- // }
|
|
|
-
|
|
|
- // try {
|
|
|
- // const result = await axios.post(apiUrl + '/api/v1/stream/set-label', param);
|
|
|
- // if (result) {
|
|
|
- // if (result.data.statusCode === 200 && !result.data.result.errorCode) {
|
|
|
- // let bufferValue = Buffer.from(result.data.result.fileData, "base64");
|
|
|
- // file = bufferValue;
|
|
|
- // }
|
|
|
- // else {
|
|
|
- // console.log(result.data);
|
|
|
- // return res.json({success:'F', message: '파일명 : ' + originName + '<br>에러 : ' + result.data.result.errorMessage});
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- // catch(error) {
|
|
|
- // console.log(error);
|
|
|
- // }
|
|
|
- }
|
|
|
+ promiseArray.push(endPoint + "/sites/"+ siteId +"/drive/items/"+itemId+':/'+originName+':/content');
|
|
|
}
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- // console.log(labelData.data);
|
|
|
- // return res.json({message:'test'});
|
|
|
+ try {
|
|
|
+ let fileWriteTime = new Date();
|
|
|
+ const writeArr = await Promise.all(fileWriteArray);
|
|
|
|
|
|
- // let formatPath = '';
|
|
|
- // if (filePath) {
|
|
|
- // if (Array.isArray(filePath) && filePath.length > 0) {
|
|
|
- // formatPath = filePath[0];
|
|
|
- // if (filePath.length > 1) {
|
|
|
- // req.body[ fileName + "_path"] = filePath.splice(1);
|
|
|
- // }
|
|
|
- // }
|
|
|
- // else if (filePath.trim()){
|
|
|
- // formatPath = filePath;
|
|
|
- // }
|
|
|
+ let writeTime = timeCheck(fileWriteTime, new Date());
|
|
|
+ console.log('파일 Write Time : '+ writeTime);
|
|
|
|
|
|
- // if (!path.includes(":")) {
|
|
|
- // formatPath = ":" + formatPath;
|
|
|
- // }
|
|
|
- // }
|
|
|
|
|
|
- // let itemId = '';
|
|
|
- // const uri = endPoint + "/sites/"+ siteId + path + formatPath;
|
|
|
-
|
|
|
- // if (beforeUri === uri) {
|
|
|
- // itemId = beforeItemId;
|
|
|
- // }
|
|
|
- // else {
|
|
|
- // const sitesInfo = await axios.get(uri, options);
|
|
|
- // itemId = sitesInfo.data.id;
|
|
|
- // beforeUri = uri;
|
|
|
- // beforeItemId = itemId;
|
|
|
- // }
|
|
|
+ const labelTime = new Date();
|
|
|
+ const labelResult = await Promise.all(labelPromiseArray);
|
|
|
+ // console.log(labelResult);
|
|
|
+ console.log('label time : ', timeCheck(labelTime, new Date()));
|
|
|
+
|
|
|
+ labelResult.forEach((obj, idx)=>{
|
|
|
+ if (obj.data && !obj.data.result.errorCode && obj.data.result.fileData) {
|
|
|
+ const data = Buffer.from(obj.data.result.fileData, 'base64');
|
|
|
+ promiseArray[idx] = axios.put(promiseArray[idx], data, options);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // const readArray = [];
|
|
|
+ // labelResult.forEach((obj)=>{
|
|
|
+ // readArray.push(new Promise((resolve, reject)=>{
|
|
|
+ // if (obj.data && !obj.data.result.errorCode) {
|
|
|
+ // fs.readFile('Z:/Target/' + obj.data.result.outputFileName, (err, data)=>{
|
|
|
+ // if (err) {
|
|
|
+ // reject({err});
|
|
|
+ // }
|
|
|
+ // resolve({data});
|
|
|
+ // //promiseArray[idx] = axios.put(promiseArray[idx], data, options);
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ // else {
|
|
|
+ // reject(obj.data.result.errorMessage);
|
|
|
+ // }
|
|
|
+ // }))
|
|
|
+ // });
|
|
|
+ // console.log('labelResult : ', labelResult);
|
|
|
+ // let readTime = new Date();
|
|
|
+ // const readResult = await Promise.all(readArray);
|
|
|
+
|
|
|
+ // console.log(readResult);
|
|
|
+ // console.log('File Read time : ', timeCheck(readTime, new Date()));
|
|
|
+
|
|
|
+
|
|
|
+ let uploadTime = new Date();
|
|
|
+ // promiseArray.forEach((obj, idx)=>{
|
|
|
+ // // console.log(readResult[idx].data);
|
|
|
+ // // console.log(obj[idx]);
|
|
|
+ // promiseArray[idx] = axios.put(obj, readResult[idx].data, options);
|
|
|
+ // });
|
|
|
+
|
|
|
+ const uploadResult = await Promise.all(promiseArray);
|
|
|
+
|
|
|
+ console.log('File uploadTime : ', timeCheck(uploadTime, new Date()));
|
|
|
|
|
|
- // promiseArray.push(axios.put(endPoint + "/sites/"+ siteId +"/drive/items/"+itemId+':/'+originName+':/content', file, options));
|
|
|
- }
|
|
|
- }
|
|
|
- if (promiseArray.length > 0) {
|
|
|
- try {
|
|
|
- const result = await Promise.all(promiseArray);
|
|
|
}
|
|
|
catch(error){
|
|
|
return res.json({success:'F', message: '요청하신 파일 업로드 중 오류가 발생하였습니다.<br>' + getErrorMessage(error)});
|
|
|
}
|
|
|
+
|
|
|
+ const endTime = new Date();
|
|
|
+ let betweenTime = timeCheck(startTime, endTime);
|
|
|
+ console.log('시작 시간 :', startTime.toLocaleString(), ', 종료 시간 :', endTime.toLocaleString(), ', 소요 시간 :', betweenTime);
|
|
|
+ res.json({success:'S', message: '요청하신 파일 업로드가 정상적으로 처리 되었습니다.'});
|
|
|
}
|
|
|
- const endTime = new Date();
|
|
|
- let betweenTime = endTime - startTime;
|
|
|
- if (betweenTime > 60000) {
|
|
|
- betweenTime = (betweenTime/1000/60) + ' 분';
|
|
|
- }
|
|
|
- else {
|
|
|
- betweenTime = (betweenTime/1000) + ' 초';
|
|
|
+
|
|
|
+ // let fileReadTime = new Date();
|
|
|
+ // const result = await Promise.all(labelPromiseArray).then((result)=>{
|
|
|
+ // const array = [];
|
|
|
+ // for (let item of result) {
|
|
|
+ // const obj = item.data;
|
|
|
+ // if (obj.success && !obj.result.errorCode) {
|
|
|
+ // // console.log(obj.result);
|
|
|
+ // const labelFile = fs.readFileSync('Z:/Target/' + obj.result.outputFileName);
|
|
|
+ // array.push({success:'S', dispFileName: obj.result.dispFileName, outputFileName : obj.result.outputFileName, file: labelFile});
|
|
|
+ // }
|
|
|
+ // else {
|
|
|
+ // array.push({success:'F', message: '요청하신 파일 업로드 중 오류가 발생하였습니다.<br>' + obj.result.errorMessage});
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // return array;
|
|
|
+ // });
|
|
|
+ // const array = [];
|
|
|
+
|
|
|
+
|
|
|
+ // const result = await Promise.all(labelPromiseArray).then(async (result)=>{
|
|
|
+ // return await Promise.all(result.map((item, idx)=>{
|
|
|
+ // const obj = item.data;
|
|
|
+ // if (obj.success && !obj.result.errorCode) {
|
|
|
+ // fs.readFile('Z:/Target/' + obj.result.outputFileName, (err, data)=>{
|
|
|
+ // if (err) {
|
|
|
+ // throw err;
|
|
|
+ // }
|
|
|
+ // promiseArray[idx] = axios.put(promiseArray[idx], data, options);
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ // else {
|
|
|
+ // throw obj.result.errorMessage;
|
|
|
+ // }
|
|
|
+ // })).then(async()=>{
|
|
|
+ // return await Promise.all(promiseArray);
|
|
|
+ // })
|
|
|
+ // });
|
|
|
+ // const result = await Promise.all(promiseArray);
|
|
|
+ // console.log(result);
|
|
|
+ // console.log('파일 Read 소요시간 : '+timeCheck(fileReadTime, new Date()));
|
|
|
+ // console.log(result);
|
|
|
+ // const array = await Promise.all(result.map((item, idx)=>{
|
|
|
+ // const obj = item.data;
|
|
|
+ // if (obj.success && !obj.result.errorCode) {
|
|
|
+ // fs.readFile('Z:/Target/' + obj.result.outputFileName, (err, data)=>{
|
|
|
+ // if (err) {
|
|
|
+ // throw err;
|
|
|
+ // }
|
|
|
+ // promiseArray[idx] = axios.put(promiseArray[idx], data, options);
|
|
|
+ // return {success:'S', dispFileName: obj.result.dispFileName, outputFileName : obj.result.outputFileName, file: data};
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ // else {
|
|
|
+ // return {success:'F', message: '요청하신 파일 업로드 중 오류가 발생하였습니다.<br>' + obj.result.errorMessage};
|
|
|
+ // }
|
|
|
+ // }))
|
|
|
+
|
|
|
+ // const errorIdx = array.findIndex((obj)=> obj.success === 'F');
|
|
|
+ // if (errorIdx >= 0) {
|
|
|
+ // return res.json(array[errorIdx]);
|
|
|
+ // }
|
|
|
+ // for (let ii = 0; ii < result.length; ii++) {
|
|
|
+ // const obj = result[ii].data;
|
|
|
+ // if (obj.success && !obj.result.errorCode) {
|
|
|
+ // // console.log(obj.result);
|
|
|
+ // const labelFile = fs.readFileSync('Z:/Target/' + obj.result.outputFileName);
|
|
|
+ // array.push({success:'S', dispFileName: obj.result.dispFileName, outputFileName : obj.result.outputFileName, file: labelFile});
|
|
|
+ // }
|
|
|
+ // else {
|
|
|
+ // array.push({success:'F', message: '요청하신 파일 업로드 중 오류가 발생하였습니다.<br>' + obj.result.errorMessage});
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // console.log(array);
|
|
|
+ // console.log('파일 Read 소요시간 : '+timeCheck(fileReadTime, new Date()));
|
|
|
+ // return res.json({success: 'F', message: 'test'});
|
|
|
+ // if (result && result.length > 0) {
|
|
|
+ // for (let ii=0; ii < result.length; ii++) {
|
|
|
+ // if (result[ii] && result[ii].success === 'S') {
|
|
|
+ // promiseArray[ii] = axios.put(promiseArray[ii], result[ii].file, options);
|
|
|
+ // }
|
|
|
+ // else {
|
|
|
+ // return res.json(result[ii]);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // .catch((error)=>{
|
|
|
+ // console.log('=========================에러=================')
|
|
|
+ // console.log(error);
|
|
|
+ // return res.json({success:'F', message: '요청하신 파일 업로드 중 오류가 발생하였습니다.<br>' + getErrorMessage(error)})
|
|
|
+ // })
|
|
|
+ // let uploadTime = new Date();
|
|
|
+ // const uploadResult = await Promise.all(promiseArray);
|
|
|
+ // const uploadBetween = timeCheck(uploadTime, new Date());
|
|
|
+ // console.log('upload 소요 시간:'+uploadBetween);
|
|
|
+
|
|
|
}
|
|
|
- console.log('시작 시간 :', startTime.toLocaleString(), ', 종료 시간 :', endTime.toLocaleString(), ', 소요 시간 :', betweenTime);
|
|
|
- res.json({success:'S', message: '요청하신 파일 업로드가 정상적으로 처리 되었습니다.'});
|
|
|
- }
|
|
|
+
|
|
|
});
|
|
|
|
|
|
+function timeCheck(startTime, endTime) {
|
|
|
+ let betweenTime = endTime - startTime;
|
|
|
+ if (betweenTime > 60000) {
|
|
|
+ betweenTime = (betweenTime/1000/60) + ' 분';
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ betweenTime = (betweenTime/1000) + ' 초';
|
|
|
+ }
|
|
|
+ return betweenTime;
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
serverApp.post('/api/download',
|
|
|
// isAuthenticated,
|
|
@@ -1226,17 +1395,7 @@ async function getFolderItems(url, array, options, session) {
|
|
|
|
|
|
|
|
|
serverApp.post('/api/getPossibleExtList', async (req, res, next)=>{
|
|
|
- if (req.body) {
|
|
|
- try {
|
|
|
- const result = await getPossibleExt();
|
|
|
- return res.json(result);
|
|
|
- }
|
|
|
- catch(error) {
|
|
|
- console.log(error);
|
|
|
- res.status(error.status);
|
|
|
- res.send(error);
|
|
|
- }
|
|
|
- }
|
|
|
+ return res.json(POSSIBLE_EXT);
|
|
|
})
|
|
|
|
|
|
serverApp.post('/api/delete',
|