leeseohyeon

중복된 파일 업로드

1 { 1 {
2 - "accessKeyId": "ASIAZQ5XTMMF6YISFPTT", 2 + "accessKeyId": "ASIAZQ5XTMMF7TDZAE65",
3 - "secretAccessKey": "xA+qE27WeUITzCN2aCaOPjwuVsLPP7oUulJQMepo", 3 + "secretAccessKey": "6S8IoEaPLaml9KHDb1UrS6mewFm7xEizdUMJZWBe",
4 - "sessionToken": "FwoGZXIvYXdzEHYaDFT5RqkwQ+aGLKTBWSLDAa6JZ9gBHVnbifynA5/p7y83dZ0nu0LFsk2o6qU/GRgDUtc3eYXaOK9apAW8Hr47+FTKzS3ZLVE6eqafoCN0iPjkj/6wrLLZCAsVOA682O5nsNC3VTyrzLFr2tKIXpH4sUj6/pgqakH4O3Z36HNIe/icwzaamOQI2sheShLMKFL80RU6xV+MrmKSkcgP7cw87lPfSvMhcA5IQwu2sy37L/nVdQGPNAuljUP/jMCoEqCKc74iHka0MelLa7ImWF3SXX69nyjbt7n2BTItMKGD0w4ypJBEnA3wOaIks7MgxHeuVPNMsZkZawUAkJYbl8OgzWLBIS/xGWnL", 4 + "sessionToken": "FwoGZXIvYXdzEHgaDCqtdh2Y9+DetJSd6SLDAbpPE85YYhubMVWMpX8h4BvyzZZxZOaEHjlk4ix1KeVihUFvxgr7QHOWBEDIXeQBxlq7s/1pP/BzWU/rGZ6ykWPl/SEHXw9myP3KjeBiGLauHnF28CSZScLDHyTZPmIEa7e7xt1LQD3FKeifiH5fn2qEGqe+j0fG09SM8LfUz2NSxtEVhaDZGblK0hp3/lB7bPm25qz30FcxGmdKj1k7dKKvvRCvKTyi78eyz+8Y1rYbCzlSEgJcJHaZwWoGVpK7TFYxmCi48Ln2BTIt8hCtBEpDDbGf/9Y+ixIraevKKLXHM4JuJsL52URse2hMcTdnBRdyTVIDAyyK",
5 "region": "us-east-1" 5 "region": "us-east-1"
6 } 6 }
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -144,9 +144,11 @@ var S3 = { ...@@ -144,9 +144,11 @@ var S3 = {
144 144
145 S3.getFileList(bucketName, userId, targetPath, function (res, data) { 145 S3.getFileList(bucketName, userId, targetPath, function (res, data) {
146 var answer = false; 146 var answer = false;
147 + var lvNum;
148 +
147 if (!res) { 149 if (!res) {
148 console.log("Overlap Check Error on Get List"); 150 console.log("Overlap Check Error on Get List");
149 - callback(false, false); 151 + callback(false, answer, lvNum);
150 } else { 152 } else {
151 if (data) { 153 if (data) {
152 for (var i = 0; i < data.Contents.length; i++) { 154 for (var i = 0; i < data.Contents.length; i++) {
...@@ -155,11 +157,18 @@ var S3 = { ...@@ -155,11 +157,18 @@ var S3 = {
155 var index = paths[0].length + paths[1].length + 2; 157 var index = paths[0].length + paths[1].length + 2;
156 if (fullpath.substring(index) == targetFile) { 158 if (fullpath.substring(index) == targetFile) {
157 answer = true; 159 answer = true;
160 + var splited = targetFile.split('(').join(',').split(')').join(',').split(',');
161 + if (splited.length != 3){
162 + lvNum = 0;
163 + }else{
164 + lvNum = parseInt(splited[1]);
165 + console.log('isNum', lvNum);
166 + }
158 break; 167 break;
159 } 168 }
160 } 169 }
161 console.log("Overlap Check Success"); 170 console.log("Overlap Check Success");
162 - callback(true, answer); 171 + callback(true, answer, lvNum);
163 } 172 }
164 } 173 }
165 }) 174 })
...@@ -185,6 +194,18 @@ var S3 = { ...@@ -185,6 +194,18 @@ var S3 = {
185 }) 194 })
186 }, 195 },
187 196
197 + makeVersion: function(bucketName, userId, sourceFile, lvNum, callback){
198 + var sourceFile;
199 + var splited = sourceFile.split('(').join(',').split(')').join(',').split(',');
200 + if (splited.length != 3){
201 + sourceFile = sourceFile.split('.')[0] + '(' + lvNum.toString() + ')' + sourceFile.split('.')[1];
202 + }else{
203 + sourceFile = sourceFile.split('(')[0] + '(' + lvNum.toString() + ')' + sourceFile.split(')')[1];
204 + }
205 + console.log('makeVersion ', sourceFile);
206 + callback(true, sourceFile);
207 + },
208 +
188 // sourceFile에 임의의 경로가 포함된 경우 209 // sourceFile에 임의의 경로가 포함된 경우
189 moveFile2: function (bucketName, userId, sourceFile, targetPath, callback) { 210 moveFile2: function (bucketName, userId, sourceFile, targetPath, callback) {
190 var paths = sourceFile.split('/'); 211 var paths = sourceFile.split('/');
...@@ -224,22 +245,29 @@ var S3 = { ...@@ -224,22 +245,29 @@ var S3 = {
224 Key: 'drive/' + userId + '/' + targetFile, 245 Key: 'drive/' + userId + '/' + targetFile,
225 Body: pathbody 246 Body: pathbody
226 }; 247 };
227 - S3.isFileOverlapped(bucketName, userId, targetFile, function (res, ans) { 248 + S3.isFileOverlapped(bucketName, userId, targetFile, function (res, ans, lvNum) {
228 if (!res) { 249 if (!res) {
229 console.log("Overlap Check failed"); 250 console.log("Overlap Check failed");
230 - callback(false); 251 + callback(false, sourceFile);
231 } else { 252 } else {
232 if (ans) { 253 if (ans) {
233 console.log("File Duplication"); 254 console.log("File Duplication");
234 - callback(false); 255 + S3.makeVersion(bucketName, userId, sourceFile, lvNum+1, function(res, versionedSourceFile){
256 + if (!res){
257 + console.log("Make version failed");
258 + callback(false, sourceFile);
259 + }else{
260 + S3.uploadFile(bucketName, userId, versionedSourceFile, targetPath, body, callback);
261 + }
262 + })
235 } else { 263 } else {
236 s3.upload(uploadParams, function (err, data) { 264 s3.upload(uploadParams, function (err, data) {
237 if (err) { 265 if (err) {
238 console.log("Upload Error" + err); 266 console.log("Upload Error" + err);
239 - callback(false); 267 + callback(false, sourceFile);
240 } else { 268 } else {
241 console.log("Upload Success"); 269 console.log("Upload Success");
242 - callback(true); 270 + callback(true, sourceFile);
243 } 271 }
244 }) 272 })
245 } 273 }
...@@ -250,10 +278,13 @@ var S3 = { ...@@ -250,10 +278,13 @@ var S3 = {
250 278
251 uploadFiles: function (iter, errFiles, bucketName, userId, sourceFiles, targetPath, bodies, callback) { 279 uploadFiles: function (iter, errFiles, bucketName, userId, sourceFiles, targetPath, bodies, callback) {
252 if (iter < sourceFiles.length) { 280 if (iter < sourceFiles.length) {
253 - S3.uploadFile(bucketName, userId, sourceFiles[iter], targetPath, bodies[iter], function (res) { 281 + S3.uploadFile(bucketName, userId, sourceFiles[iter], targetPath, bodies[iter], function (res, resSourceFile) {
254 if (!res) { 282 if (!res) {
255 errFiles.push(sourceFiles[iter]); 283 errFiles.push(sourceFiles[iter]);
256 } 284 }
285 + if (sourceFiles[iter] != resSourceFile){ // 파일 중복으로 다른 버전이 생긴 경우
286 + sourceFiles[iter] = resSourceFile;
287 + }
257 S3.uploadFiles(iter + 1, errFiles, bucketName, userId, sourceFiles, targetPath, bodies, callback); 288 S3.uploadFiles(iter + 1, errFiles, bucketName, userId, sourceFiles, targetPath, bodies, callback);
258 }) 289 })
259 } else { 290 } else {
......