| 
					
				 | 
			
			
				@@ -78,6 +78,10 @@ serverApp.use(session({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+serverApp.use(async (req, res, next)=>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  POSSIBLE_EXT = await init(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  next(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 serverApp.set(express.json()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 serverApp.use(cookieParser()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 serverApp.use(express.urlencoded({ extended: false })); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -140,7 +144,6 @@ serverApp.use(bodyParser.json()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 serverApp.get("/tab",  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   async function (req, res, next) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    POSSIBLE_EXT = await init(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     res.sendFile(globalPath.join(__dirname, "/views/hello.html"),  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -213,13 +216,6 @@ 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 options = getOptions(req.session.accessToken); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       const uriArr = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         axios.get(endPoint + "/me/drive/root", options), 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -253,13 +249,8 @@ serverApp.post("/getGroupList",  async function (req, res, next) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (teams && teams.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (let team of teams) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // for (let team of public) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           const item = await getFetch(endPoint + "/groups/"+team.id+"/drive/items/root/children", req.session.accessToken); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           const sharePoint = await getFetch(endPoint + "/groups/"+team.id+"/drive/SharePointIds", req.session.accessToken); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // const image = await axios.get(endPoint + "/groups/" + team.id + "/photo/$value", options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // if (image && image.data) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          //   team.image = image.data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           if (sharePoint) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             team.sharePoint = sharePoint; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -451,6 +442,7 @@ async function uploadDrive(options, folder, siteId, path) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (!Array.isArray(folder)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     folder = [folder]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  let promiseArray = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   for (let item of folder) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const fileInfo = JSON.parse(item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -468,6 +460,7 @@ async function uploadDrive(options, folder, siteId, path) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let uri = endPoint + "/sites/"+ siteId + path + folderPath; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    promiseArray.push(axios.get(uri, options)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const result = await new Promise (async (resolve, reject)=>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         axios.get(uri, options).then((sitesInfo)=>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           resolve(sitesInfo.data); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -506,212 +499,189 @@ serverApp.post('/api/upload', upload.array('file'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const startTime = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const files = req.files; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let {siteId, path, folder, file_path} = req.body;  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (siteId && path) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      const options = getOptions(req.session.accessToken); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (folder){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const uploadDriveResult = await uploadDrive(options, folder, siteId, path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (uploadDriveResult.success === 'F') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          return res.json(uploadDriveResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (siteId && path) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const options = getOptions(req.session.accessToken); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (folder){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          const uploadDriveResult = await uploadDrive(options, folder, siteId, path); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (uploadDriveResult.success === 'F') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return res.json(uploadDriveResult); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      let fileWriteTime = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (files && files.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          const promiseArray = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          const labelPromiseArray = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // const fileWriteArray = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          const possibleExt = POSSIBLE_EXT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          const {supported_file_ext, protected_file_ext} = possibleExt; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          let supportedArr = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // let protectedArr = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // let protectedMap = new Map(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          if (supported_file_ext && protected_file_ext) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            supportedArr = supported_file_ext.split(';'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // protectedArr = protected_file_ext.split(';'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!supportedArr[supportedArr.length - 1]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              supportedArr.splice(supportedArr.length - 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let fileWriteTime = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (files && files.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // if (!protectedArr[protectedArr.length - 1]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //   protectedArr.splice(protectedArr.length - 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // if (protectedArr.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //   for (let array of protectedArr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     array = array.split('-'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     if (array.length === 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //       protectedMap.set(array[0], array[1]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          let beforeUri = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          let beforeItemId = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          // const siteInfoArr = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          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) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let ext = globalPath.extname(originName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // fileWriteArray.push(new Promise((resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //   const data = fs.writeFileSync('Z:/Source/' + realFileName, file.buffer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //   resolve({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //     data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //   }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let beforeUri = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let beforeItemId = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (let idx in files) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              const file = files[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              file.originalname = Buffer.from(file.originalname, 'ascii').toString('utf8'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              let originName = file.originalname; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              if (originName) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  let ext = globalPath.extname(originName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  if (supportedArr.length > 0 && !supportedArr.includes(ext)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      return res.json({success:'F', message: '파일명 : ' + originName  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        +'<br>업로드 불가 파일이 포함되어 있습니다.<br>가능 확장자 :'  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        + JSON.stringify(supportedArr)}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                const base64Data = Buffer.from(file.buffer).toString('base64'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                const param = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  apiKey: gateWayKey, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  email: req.session.account.idTokenClaims.email, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  dispFileName: originName, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  aipGuid: "878173ae-cc36-4881-af57-604af868314c", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  // aipGuid: "0166b75f-6a93-47f3-8fd3-e1e7c59141ab", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  // comment: "set-protection", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  comment: "set-label", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  fileData: base64Data, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  // const uuid = uuidv4(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  // const realFileName = uuid + ext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  // fileWriteArray.push(new Promise((resolve, reject) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  //   const data = fs.writeFileSync('Z:/Source/' + realFileName, file.buffer) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  //   resolve({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  //     data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  //   }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  // })); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  const base64Data = Buffer.from(file.buffer).toString('base64'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  const param = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    apiKey: gateWayKey, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    email: req.session.account.idTokenClaims.email, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    dispFileName: originName, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    aipGuid: "878173ae-cc36-4881-af57-604af868314c", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // aipGuid: "0166b75f-6a93-47f3-8fd3-e1e7c59141ab", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // comment: "set-protection", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    comment: "set-label", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    fileData: base64Data, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // labelPromiseArray.push(new Promise(async (resolve)=>{resolve(await axios.post(apiUrl + '/api/v1/stream/set-label', param))})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                labelPromiseArray.push(axios.post(apiUrl + '/api/v1/stream/set-label', param)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // labelPromiseArray.push(axios.post(apiUrl + '/api/v1/stream/set-protection', param)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let formatPath = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (file_path[idx]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  // console.log(file_path[idx]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  if (!path.includes(":")) {  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    formatPath = ":" + file_path[idx];  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  // labelPromiseArray.push(new Promise(async (resolve)=>{resolve(await axios.post(apiUrl + '/api/v1/stream/set-label', param))})); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  labelPromiseArray.push(axios.post(apiUrl + '/api/v1/stream/set-label', param)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  // labelPromiseArray.push(axios.post(apiUrl + '/api/v1/stream/set-protection', param)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  let formatPath = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  if (file_path[idx]) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // console.log(file_path[idx]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!path.includes(":")) {  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      formatPath = ":" + file_path[idx];  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                      formatPath = file_path[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    formatPath = file_path[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  let itemId = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  const uri = endPoint + "/sites/"+ siteId + path + formatPath; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  // siteInfoArr.push(axios.get(uri, options)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  if (beforeUri === uri) {  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    itemId = beforeItemId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let itemId = ''; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                const uri = endPoint + "/sites/"+ siteId + path + formatPath; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // siteInfoArr.push(axios.get(uri, options)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (beforeUri === uri) {  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  itemId = beforeItemId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     const sitesInfo = await axios.get(uri, options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     itemId = sitesInfo.data.id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     beforeUri = uri; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     beforeItemId = itemId;  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  catch(error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    console.log(error); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    res.json({success:'F', message: '파일 업로드 작업 중 오류가 발생했습니다.<br>에러 : ' + JSON.stringify(error.message)}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  // if (protectedMap.size > 0 && protectedMap.get(ext)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  //   let name = originName.replace(ext, ''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  //   ext = protectedMap.get(ext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  //   originName = name + ext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  promiseArray.push(endPoint + "/sites/"+ siteId +"/drive/items/"+itemId+':/'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // const siteInfos = await Promise.all(siteInfoArr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // siteInfos.forEach((obj)=>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //   promiseArray.push(endPoint + "/sites/"+ siteId +"/drive/items/"+obj.data.id+':/'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //file write 시 사용 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //const writeArr = await Promise.all(fileWriteArray); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let writeTime = timeCheck(fileWriteTime, new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                console.log('파일 Write Time : '+ writeTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const labelTime = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const labelResult = await Promise.all(labelPromiseArray); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // console.log(labelResult[0].data.result.fileData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                console.log('label time : ', timeCheck(labelTime, new Date())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (let idx in labelResult) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  const obj = labelResult[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  if (obj.data && !obj.data.result.errorCode && obj.data.result.fileData) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    const data = Buffer.from(obj.data.result.fileData, 'base64'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // promiseArray[idx] = new Promise(async (resolve)=> resolve(await axios.put(promiseArray[idx] + obj.data.result.dispFileName + ':/content', data, options))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    promiseArray[idx] = axios.put(promiseArray[idx] + obj.data.result.dispFileName + ':/content', data, options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // promiseArray.push(axios.put(endPoint + "/sites/"+ siteId +"/drive/items/"+ siteInfos[idx].data.id + ':/' + obj.data.result.dispFileName + ':/content', data, options)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    throw '파일명 : '+obj.data.result.dispFileName + '<br>에러 : ' + obj.data.result.errorMessage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 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] + obj.data.result.dispFileName + ':/content', data, options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     // promiseArray.push(axios.put(endPoint + "/sites/"+ siteId +"/drive/items/"+ siteInfos[idx].data.id + ':/' + obj.data.result.dispFileName + ':/content', data, options)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //   else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //     throw '파일명 : '+obj.data.result.dispFileName + '<br>에러 : ' + obj.data.result.errorMessage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 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())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // if (protectedMap.size > 0 && protectedMap.get(ext)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //   let name = originName.replace(ext, ''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //   ext = protectedMap.get(ext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //   originName = name + ext; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                promiseArray.push(endPoint + "/sites/"+ siteId +"/drive/items/"+itemId+':/'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              // const siteInfos = await Promise.all(siteInfoArr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              // siteInfos.forEach((obj)=>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              //   promiseArray.push(endPoint + "/sites/"+ siteId +"/drive/items/"+obj.data.id+':/'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              // }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              //file write 시 사용 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              //const writeArr = await Promise.all(fileWriteArray); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              let writeTime = timeCheck(fileWriteTime, new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              console.log('파일 Write Time : '+ writeTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-               
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              const labelTime = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              const labelResult = await Promise.all(labelPromiseArray); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              // console.log(labelResult[0].data.result.fileData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              console.log('label time : ', timeCheck(labelTime, new Date())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              for (let idx in labelResult) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                const obj = labelResult[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (obj.data && !obj.data.result.errorCode && obj.data.result.fileData) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  const data = Buffer.from(obj.data.result.fileData, 'base64'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  // promiseArray[idx] = new Promise(async (resolve)=> resolve(await axios.put(promiseArray[idx] + obj.data.result.dispFileName + ':/content', data, options))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  promiseArray[idx] = axios.put(promiseArray[idx] + obj.data.result.dispFileName + ':/content', data, options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  // promiseArray.push(axios.put(endPoint + "/sites/"+ siteId +"/drive/items/"+ siteInfos[idx].data.id + ':/' + obj.data.result.dispFileName + ':/content', data, options)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  throw '파일명 : '+obj.data.result.dispFileName + '<br>에러 : ' + obj.data.result.errorMessage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              // 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] + obj.data.result.dispFileName + ':/content', data, options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              //     // promiseArray.push(axios.put(endPoint + "/sites/"+ siteId +"/drive/items/"+ siteInfos[idx].data.id + ':/' + obj.data.result.dispFileName + ':/content', data, options)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              //   else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              //     throw '파일명 : '+obj.data.result.dispFileName + '<br>에러 : ' + obj.data.result.errorMessage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              //   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              // }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              // 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())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                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())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          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 = timeCheck(startTime, endTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          console.log('시작 시간 :', startTime.toLocaleString(), ', 종료 시간 :', endTime.toLocaleString(), ', 소요 시간 :', betweenTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          res.json({success:'S', message: '요청하신 파일 업로드가 정상적으로 처리 되었습니다.'}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return res.json({success:'F', message: '업로드 요청 파라미터 정보를 확인해 주세요.'}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return res.json({success:'F', message: '업로드 요청 파라미터 정보를 확인해 주세요.'}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    catch(error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log(error); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      res.json({success:'F', message: '파일 업로드 작업 중 오류가 발생했습니다.<br>에러 : ' + JSON.stringify(error.message)}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -775,11 +745,12 @@ serverApp.post('/api/download', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let date = now.getDate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (date < 10) date = "0" + date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             zip.generateAsync({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              type: 'base64', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              type: 'nodebuffer', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }).then((resZip)=>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               const endTime = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              const base64Data = Buffer.from(resZip).toString('base64'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               console.log('시작 시간 :', startTime.toLocaleString(), ', 종료 시간 :', endTime.toLocaleString(), ', 소요 시간 :', timeCheck(startTime, endTime)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              return res.json({success: 'S', data: resZip, name: zipName + '_' + year + '-' + month + '-' + date + '.zip'}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              return res.json({success: 'S', data: base64Data, name: zipName + '_' + year + '-' + month + '-' + date + '.zip'}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             .catch((error)=>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               console.log(error); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -805,6 +776,7 @@ async function getFolderItems(url, array, options, session, zip) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return axios.get(url + obj.id, options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   })) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   .then(async (siteInfos)=>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let promiseArray = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       for (let site of siteInfos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const data = site.data; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (data) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -813,14 +785,8 @@ async function getFolderItems(url, array, options, session, zip) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (data.folder.childCount) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               const itemsData = await axios.get(url + data.id + '/children', options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               if (itemsData && itemsData.data && itemsData.data.value.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  await getFolderItems(url, itemsData.data.value, options, session, zip.folder(data.name)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                catch(error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  if (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    throw error; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  promiseArray.push(new Promise((resolve)=>resolve(getFolderItems(url, itemsData.data.value, options, session, zip.folder(data.name))))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  // promiseArray.push(getFolderItems(url, itemsData.data.value, options, session, zip.folder(data.name))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -837,13 +803,20 @@ async function getFolderItems(url, array, options, session, zip) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (promiseArray.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        await Promise.all(promiseArray); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (fileArr.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return Promise.all(fileArr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   .then((result)=>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (result && result.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return Promise.all(result.map((data, idx)=>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let array = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for (let idx in result) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const data = result[idx]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const param = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           apiKey: gateWayKey, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           email : session.account.idTokenClaims.email, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -851,8 +824,9 @@ async function getFolderItems(url, array, options, session, zip) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           comment: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           fileData: Buffer.from(data.data).toString('base64') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return axios.post(apiUrl + '/api/v1/stream/delete-label', param); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      }))   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        array.push(axios.post(apiUrl + '/api/v1/stream/delete-label', param)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return Promise.all(array) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   .then((deleteLabelFiles)=>{ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -869,7 +843,6 @@ async function getFolderItems(url, array, options, session, zip) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         })) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |