Showing
6 changed files
with
105 additions
and
15 deletions
... | @@ -9,11 +9,13 @@ var fs = require('fs'); | ... | @@ -9,11 +9,13 @@ var fs = require('fs'); |
9 | var moment = require('moment'); | 9 | var moment = require('moment'); |
10 | 10 | ||
11 | 11 | ||
12 | + | ||
12 | // /file/modify/:name | 13 | // /file/modify/:name |
13 | router.post('/:name', function(req, res){ | 14 | router.post('/:name', function(req, res){ |
14 | var user_id = req.body.user_id; | 15 | var user_id = req.body.user_id; |
15 | var curPath = req.body.cur; // /folder1/folder2/ | 16 | var curPath = req.body.cur; // /folder1/folder2/ |
16 | var file_name = req.params.name; | 17 | var file_name = req.params.name; |
18 | + var modified_name = req.body.name; | ||
17 | var modified_content = req.body.content; | 19 | var modified_content = req.body.content; |
18 | 20 | ||
19 | var targetPath; | 21 | var targetPath; |
... | @@ -23,25 +25,43 @@ router.post('/:name', function(req, res){ | ... | @@ -23,25 +25,43 @@ router.post('/:name', function(req, res){ |
23 | targetPath = curPath.substring(1, curPaht.length-1); // folder1/folder2 | 25 | targetPath = curPath.substring(1, curPaht.length-1); // folder1/folder2 |
24 | } | 26 | } |
25 | 27 | ||
26 | - var tempDownloadDir = __dirname + '/../modules/s3/download/' + user_id + curPath + file_name; | 28 | + var originalDir = __dirname + '/../modules/s3/download/' + user_id + curPath + file_name; |
27 | - fs.writeFileSync(tempDownloadDir, modified_content); | 29 | + var tempDownloadDir; |
28 | 30 | ||
29 | - S3.coverFile(S3.BUCKET_NAME, user_id, file_name, targetPath, tempDownloadDir, function(result){ | 31 | + // 파일 이름 변경 |
30 | - fs.unlink(tempDownloadDir, function(err){ | 32 | + S3.renameFile(S3.BUCKET_NAME, user_id, file_name, modified_name, targetPath, function(result, r_modified_name){ |
31 | if (result){ | 33 | if (result){ |
32 | - var sql = 'UPDATE files SET updated=(?) WHERE user_id=(?) AND location=(?) AND file_name=(?)'; | 34 | + modified_name = r_modified_name; |
33 | - connection.query(sql, [moment().format(), user_id, curPath, file_name], function(err){ | 35 | + tempDownloadDir = __dirname + '/../modules/s3/download/' + user_id + curPath + modified_name; |
36 | + fs.unlink(originalDir, function(err){ | ||
34 | if (err){ | 37 | if (err){ |
35 | console.log(err); | 38 | console.log(err); |
36 | - res.send({error: 'update error'}); | 39 | + res.send({error: 'original file not exists in server'}); |
37 | }else{ | 40 | }else{ |
41 | + // 파일 내용 변경 | ||
42 | + fs.writeFileSync(tempDownloadDir, modified_content); | ||
43 | + | ||
44 | + S3.coverFile(S3.BUCKET_NAME, user_id, modified_name, targetPath, tempDownloadDir, function (result) { | ||
45 | + if (result) { | ||
46 | + var sql = 'UPDATE files SET file_name=(?), updated=(?) WHERE user_id=(?) AND location=(?) AND file_name=(?)'; | ||
47 | + connection.query(sql, [modified_name, moment().format(), user_id, curPath, file_name], function (err) { | ||
48 | + if (err) { | ||
49 | + console.log(err); | ||
50 | + res.send({ error: 'update error' }); | ||
51 | + } else { | ||
52 | + fs.unlinkSync(tempDownloadDir); | ||
38 | res.send('modify file success'); | 53 | res.send('modify file success'); |
39 | } | 54 | } |
40 | }) | 55 | }) |
41 | - }else{ | 56 | + } else { |
42 | - res.send({error: 'modify file failed'}); | 57 | + res.send({ error: 'modify file failed' }); |
43 | } | 58 | } |
44 | }) | 59 | }) |
60 | + } | ||
61 | + }); | ||
62 | + }else{ | ||
63 | + res.send({error: 'rename error'}); | ||
64 | + } | ||
45 | }) | 65 | }) |
46 | }); | 66 | }); |
47 | 67 | ... | ... |
1 | { | 1 | { |
2 | - "accessKeyId": "ASIAZQ5XTMMFTERCRTOO", | 2 | + "accessKeyId": "ASIAZQ5XTMMFUHLZZ4M2", |
3 | - "secretAccessKey": "4D60bmLZb2IZje42JQp0UjYW9Y/RBVRR94ivjNrc", | 3 | + "secretAccessKey": "0et6RCcKOQtE9uZLw4c4WTBkvoLhnfyF/gu+Izi+", |
4 | - "sessionToken": "FwoGZXIvYXdzEEkaDMTw/lUiPUptDH7EBCLDAdFVXAZkmKCB5Fj4jYanKhUHH0iOqXumrbibz4EGubeO5HKz6KCN+EBvJwBbjDpagzkTYdVQHZa8sZAdEX6+41Qyv6bHM0MpEaHZIpt/ku87++qwk47NNlFJn5/iTnif3GwTKf69F2FTh1Y/+qjaP/URN8di0LZAyRonD4UuXwpmZIykWLhj7VCxpyYXBaiKBuE5eRrMQANddl3BROtS5FttRz+GsYXlalrR87UdXAoDFRJhyCpggxZCRe7+b9k3Tge7YiiX5uf2BTItnh1CIWbGHwx0sYdBpnLCZpxg31RU95Le7pW/DBJIYzxoDjjhVbz/lF0WtwIi", | 4 | + "sessionToken": "FwoGZXIvYXdzEE8aDC4plMfgaXo81Tt/QyLDASYTNLXjU0qWi+IAmgwl5sAMu6DPqCjeEWO4W22bSYhD178WdC/y8uz35EGd/pf5aRORKj71TiR6CsoxcEO8lW4VsN/Fdq8PfHbb5zuVqkILOtsBoAdR2/XvG3wHTqvx7LHMrFpUsgTjQkXAws7IiKV6siQrTS/p5lSmV8HZsekDktvnI+E+DkQrcvWy/BoGDJxXlpGsGZzIers2MjqzmgszC0CjTglw7aMKWriwIyhkUjo9ewIzIalCQUzk3Lr8mshmfCjOjOn2BTIt3OSehGo0BMhqYmik1RkykXo2bOqIWeZWS2lmb7Oa8GSqOcLDI4NRKgkLZ+1q", |
5 | "region": "us-east-1" | 5 | "region": "us-east-1" |
6 | } | 6 | } | ... | ... |
218 KB
1 | -modify file | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -89,10 +89,10 @@ var S3 = { | ... | @@ -89,10 +89,10 @@ var S3 = { |
89 | 89 | ||
90 | s3.upload(coverParams, function (err, data) { | 90 | s3.upload(coverParams, function (err, data) { |
91 | if (err) { | 91 | if (err) { |
92 | - console.log("Upload Error" + err); | 92 | + console.log("Cover Error" + err); |
93 | callback(false); | 93 | callback(false); |
94 | } else { | 94 | } else { |
95 | - console.log("Upload Success"); | 95 | + console.log("Cover Success"); |
96 | callback(true); | 96 | callback(true); |
97 | } | 97 | } |
98 | }) | 98 | }) |
... | @@ -305,6 +305,75 @@ var S3 = { | ... | @@ -305,6 +305,75 @@ var S3 = { |
305 | }) | 305 | }) |
306 | }, | 306 | }, |
307 | 307 | ||
308 | + // 파일 이름이 달라지는 경우 | ||
309 | + moveFile3: function (bucketName, userId, oldFile, newFile, targetPath, callback) { | ||
310 | + if (targetPath != ''){ | ||
311 | + targetPath = targetPath + '/'; | ||
312 | + } | ||
313 | + sourceFile = targetPath + oldFile; // test.txt or folder1/test.txt | ||
314 | + var targetFile = targetPath + newFile; | ||
315 | + | ||
316 | + S3.copyFile2(bucketName, userId, sourceFile, targetFile, function(result){ | ||
317 | + if (!result){ | ||
318 | + console.log("Move Error on Copying File3"); | ||
319 | + callback(false); | ||
320 | + }else{ | ||
321 | + S3.deleteFile(bucketName, userId, sourceFile, function (res) { | ||
322 | + if (!res) { | ||
323 | + console.log("Move Error on Deleting File"); | ||
324 | + callback(false); | ||
325 | + } else { | ||
326 | + console.log("Move Success"); | ||
327 | + callback(true); | ||
328 | + } | ||
329 | + }) | ||
330 | + } | ||
331 | + }) | ||
332 | + }, | ||
333 | + | ||
334 | + renameFile: function(bucketName, userId, sourceFile, modiFile, targetPath, callback){ | ||
335 | + // sourceFile = test.txt | ||
336 | + // modiFile = test2.txt | ||
337 | + // targetPath = '' or 'folder1/folder2' | ||
338 | + | ||
339 | + if (sourceFile == modiFile){ // 이름 변경되지 않은 경우 | ||
340 | + callback(true, sourceFile); | ||
341 | + }else{ | ||
342 | + if (targetPath != '') { | ||
343 | + targetPath = targetpath + '/'; | ||
344 | + } | ||
345 | + var targetFile = targetPath + modiFile; | ||
346 | + | ||
347 | + S3.isFileOverlapped(bucketName, userId, targetFile, function (res, ans, lvNum) { | ||
348 | + if (!res) { | ||
349 | + console.log("Overlap Check failed"); | ||
350 | + callback(false, sourceFile); | ||
351 | + } else { | ||
352 | + if (ans) { | ||
353 | + console.log("File Duplication"); | ||
354 | + S3.makeVersion(bucketName, userId, targetFile, lvNum + 1, function (res, versionedSourceFile) { | ||
355 | + if (!res) { | ||
356 | + console.log("Make version failed"); | ||
357 | + callback(false, sourceFile); | ||
358 | + } else { | ||
359 | + S3.renameFile(bucketName, userId, sourceFile, versionedSourceFile, targetPath, callback); | ||
360 | + } | ||
361 | + }) | ||
362 | + } else { | ||
363 | + S3.moveFile3(bucketName, userId, sourceFile, modiFile, targetPath, function (result) { | ||
364 | + if (result) { | ||
365 | + callback(true, modiFile); | ||
366 | + } else { | ||
367 | + console.log('File Rename failed'); | ||
368 | + callback(false); | ||
369 | + } | ||
370 | + }) | ||
371 | + } | ||
372 | + } | ||
373 | + }); | ||
374 | + } | ||
375 | + }, | ||
376 | + | ||
308 | uploadFile: function (bucketName, userId, sourceFile, targetPath, body, callback) { | 377 | uploadFile: function (bucketName, userId, sourceFile, targetPath, body, callback) { |
309 | var pathbody = fs.createReadStream(body); | 378 | var pathbody = fs.createReadStream(body); |
310 | 379 | ... | ... |
-
Please register or login to post a comment