junggilpark před 1 rokem
rodič
revize
5858c03fc0
3 změnil soubory, kde provedl 395 přidání a 206 odebrání
  1. 360 201
      src/app.js
  2. 31 0
      src/ext.js
  3. 4 5
      src/views/hello.html

+ 360 - 201
src/app.js

@@ -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', 

+ 31 - 0
src/ext.js

@@ -0,0 +1,31 @@
+const axios = require("axios");
+const apiUrl = 'http://192.168.20.99:5050';
+const {pool, sql} = require('./config/sql.js');
+
+async function init() {
+    const sqlQuery = 
+    `SELECT 
+        A.ConfigValue AS supported_file_ext, 
+        B.ConfigValue AS protected_file_ext 
+        FROM (SELECT * FROM TB_AIP_CONFIG WHERE ConfigKey = 'SupportedFileExt' AND AipServerId = 0) A,  
+            (SELECT * FROM TB_AIP_CONFIG WHERE ConfigKey = 'ProtectedFileExt' AND AipServerId = 0) B`;
+    try {
+        const query = await pool;
+        const result = await query.request().query(sqlQuery);
+        
+        if (result && result.recordset.length) {
+            return result.recordset[0];
+        }
+        else {
+            return [];
+        }
+    }
+    catch(error) {
+        console.log(error);
+        return [];
+    }
+}
+
+module.exports ={
+    init : init,
+}

+ 4 - 5
src/views/hello.html

@@ -1017,7 +1017,7 @@
               break;
             }
           }
-          console.log(div);
+          
           $panel.prepend($(`<div class="menu-button"><img src="/static/images/dote.png" width="20" height="20"></div>
             ${div}
           `));
@@ -1377,8 +1377,8 @@
         try {
           const result = await $.ajax({method: 'post', url: '/api/getPossibleExtList'});
           
-          if (result.success === 'S' && result.data) {
-            const { supported_file_ext } = result.data;
+          //if (result.success === 'S' && result.data) {
+            const { supported_file_ext } = result;
             if (supported_file_ext) {
               const supportedFileExtArr = supported_file_ext.split(';');
               if (supportedFileExtArr.length > 0) {
@@ -1391,7 +1391,6 @@
                   for (let file of files) {
                     if (file && file.name) {
                       let ext = file.name.substring(file.name.lastIndexOf('.'), file.name.length);
-                      console.log(ext);
                       if (!supportedFileExtArr.includes(ext)) {
                         return alertMessage(alertTitle, '파일명 : '+ file.name 
                         + '<br>해당 파일은 업로드 불가 파일입니다. 다시 시도해주세요.<br>가능 확장자 :' + JSON.stringify(supportedFileExtArr), null, 'red');
@@ -1401,7 +1400,7 @@
                 }
               }
             }
-          }
+          // }
           else {
             return alertMessage(alertTitle, '가능 확장자 정보를 불러올 수 없습니다.', null, 'red');
           }