Showing
12 changed files
with
133 additions
and
48 deletions
| ... | @@ -12,6 +12,7 @@ var registerRouter = require('./routes/userlogin/register'); | ... | @@ -12,6 +12,7 @@ var registerRouter = require('./routes/userlogin/register'); |
| 12 | var fileRouter = require('./routes/file/router'); | 12 | var fileRouter = require('./routes/file/router'); |
| 13 | //var trashcanRouter = require('./routes/trashcan/router'); | 13 | //var trashcanRouter = require('./routes/trashcan/router'); |
| 14 | var folderRouter = require('./routes/folders'); | 14 | var folderRouter = require('./routes/folders'); |
| 15 | +var quickRouter = require('./routes/quick'); | ||
| 15 | 16 | ||
| 16 | 17 | ||
| 17 | var passport = require('passport'); | 18 | var passport = require('passport'); |
| ... | @@ -61,7 +62,7 @@ app.use('/api/RegistUser', registerRouter); | ... | @@ -61,7 +62,7 @@ app.use('/api/RegistUser', registerRouter); |
| 61 | app.use('/api/folder', folderRouter); | 62 | app.use('/api/folder', folderRouter); |
| 62 | //app.use('/users', usersRouter); | 63 | //app.use('/users', usersRouter); |
| 63 | app.use('/api/file', fileRouter); | 64 | app.use('/api/file', fileRouter); |
| 64 | -//app.use('/api/trashcan', trashcanRouter); | 65 | +app.use('/api/quick', quickRouter); |
| 65 | 66 | ||
| 66 | // catch 404 and forward to error handler | 67 | // catch 404 and forward to error handler |
| 67 | app.use(function(req, res, next) { | 68 | app.use(function(req, res, next) { | ... | ... |
| ... | @@ -35,13 +35,20 @@ router.get('/:name', function (req, res) { | ... | @@ -35,13 +35,20 @@ router.get('/:name', function (req, res) { |
| 35 | var extension = targetFile.split('.')[1].toLowerCase(); | 35 | var extension = targetFile.split('.')[1].toLowerCase(); |
| 36 | 36 | ||
| 37 | 37 | ||
| 38 | - S3.downloadFile3(S3.BUCKET_NAME, user_id, targetFile, function(result, downloadDir){ | 38 | + S3.downloadFile2(S3.BUCKET_NAME, user_id, targetFile, function(result, downloadDir){ |
| 39 | if (result){ | 39 | if (result){ |
| 40 | - if (extension == 'jpg' || extension == 'jpeg' || extension == 'png') { | 40 | + var content; |
| 41 | - res.status(200).send({ type: 'image', src: downloadDir}) | 41 | + content = fs.readFileSync(downloadDir, 'utf8'); |
| 42 | - }else{ | 42 | + res.send({file_name: file_name, content: content}); |
| 43 | - res.status(200).send({type: 'text', src: downloadDir}) | 43 | + |
| 44 | - } | 44 | + //if (extension == 'jpg' || extension == 'jpeg' || extension == 'png') { |
| 45 | + // res.send({ type: 'image', src: downloadDir}) | ||
| 46 | + //}else{ | ||
| 47 | + // var content; | ||
| 48 | + // content = fs.readFileSync(downloadDir, 'utf8'); | ||
| 49 | + // res.send({file_name: file_name, content: content}); | ||
| 50 | + // //res.status(200).send({type: 'text', src: downloadDir}) | ||
| 51 | + //} | ||
| 45 | } | 52 | } |
| 46 | }) | 53 | }) |
| 47 | }); | 54 | }); | ... | ... |
backend/routes/file/modifyFile.js
0 → 100644
| 1 | +var express = require('express'); | ||
| 2 | +var router = express.Router(); | ||
| 3 | + | ||
| 4 | +var AWS = require('aws-sdk'); | ||
| 5 | +AWS.config.loadFromPath(__dirname + "/../modules/awsconfig.json"); | ||
| 6 | +var S3 = require('../modules/s3/s3'); | ||
| 7 | + | ||
| 8 | +var fs = require('fs'); | ||
| 9 | +var moment = require('moment'); | ||
| 10 | + | ||
| 11 | + | ||
| 12 | +// /file/modify/:name | ||
| 13 | +router.post('/:name', function(req, res){ | ||
| 14 | + var user_id = req.body.user_id; | ||
| 15 | + var curPath = req.body.cur; // /folder1/folder2/ | ||
| 16 | + var file_name = req.params.name; | ||
| 17 | + var modified_content = req.body.content; | ||
| 18 | + | ||
| 19 | + var targetPath; | ||
| 20 | + if (curPath == '/') { | ||
| 21 | + targetPath = ''; | ||
| 22 | + } else { | ||
| 23 | + targetPath = curPath.substring(1, curPaht.length-1); // folder1/folder2 | ||
| 24 | + } | ||
| 25 | + | ||
| 26 | + var tempDownloadDir = __dirname + '/../modules/s3/download/' + user_id + curPath + file_name; | ||
| 27 | + fs.writeFileSync(tempDownloadDir, modified_content); | ||
| 28 | + | ||
| 29 | + S3.coverFile(S3.BUCKET_NAME, user_id, file_name, targetPath, tempDownloadDir, function(result){ | ||
| 30 | + fs.unlink(tempDownloadDir, function(err){ | ||
| 31 | + if (result){ | ||
| 32 | + var sql = 'UPDATE files SET updated=(?) WHERE user_id=(?) AND location=(?) AND file_name=(?)'; | ||
| 33 | + connection.query(sql, [moment().format(), user_id, curPath, file_name], function(err){ | ||
| 34 | + if (err){ | ||
| 35 | + console.log(err); | ||
| 36 | + res.send({error: 'update error'}); | ||
| 37 | + }else{ | ||
| 38 | + res.send('modify file success'); | ||
| 39 | + } | ||
| 40 | + }) | ||
| 41 | + }else{ | ||
| 42 | + res.send({error: 'modify file failed'}); | ||
| 43 | + } | ||
| 44 | + }) | ||
| 45 | + }) | ||
| 46 | +}); | ||
| 47 | + | ||
| 48 | + | ||
| 49 | +module.exports = router; | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -6,12 +6,14 @@ var files = require('./files'); | ... | @@ -6,12 +6,14 @@ var files = require('./files'); |
| 6 | var uploadFile = require('./uploadFile'); | 6 | var uploadFile = require('./uploadFile'); |
| 7 | var downloadFile = require('./downloadFile'); | 7 | var downloadFile = require('./downloadFile'); |
| 8 | var deleteFile = require('./deleteFile'); | 8 | var deleteFile = require('./deleteFile'); |
| 9 | +var modifyFile = require('./modifyFile'); | ||
| 9 | 10 | ||
| 10 | 11 | ||
| 11 | router.use('/', files); | 12 | router.use('/', files); |
| 12 | router.use('/upload', uploadFile); | 13 | router.use('/upload', uploadFile); |
| 13 | router.use('/download', downloadFile); | 14 | router.use('/download', downloadFile); |
| 14 | router.use('/delete', deleteFile); | 15 | router.use('/delete', deleteFile); |
| 16 | +router.use('/modify', modifyFile); | ||
| 15 | 17 | ||
| 16 | 18 | ||
| 17 | module.exports = router; | 19 | module.exports = router; |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -43,6 +43,7 @@ router.post('/', function (req, res) { | ... | @@ -43,6 +43,7 @@ router.post('/', function (req, res) { |
| 43 | }else{ | 43 | }else{ |
| 44 | sourceFiles.push(files.file.name); | 44 | sourceFiles.push(files.file.name); |
| 45 | bodies.push(files.file.path); | 45 | bodies.push(files.file.path); |
| 46 | + console.log('bodies', bodies); | ||
| 46 | } | 47 | } |
| 47 | }else{ | 48 | }else{ |
| 48 | for (var file of files.file) { // 파일 여러개일 때 | 49 | for (var file of files.file) { // 파일 여러개일 때 | ... | ... |
| 1 | { | 1 | { |
| 2 | - "accessKeyId": "ASIAZQ5XTMMFRYMR3VRB", | 2 | + "accessKeyId": "ASIAZQ5XTMMFTERCRTOO", |
| 3 | - "secretAccessKey": "XG8dCozEdASwBXDpdDLoXHXRzXwdaUoZ7Iclpnn7", | 3 | + "secretAccessKey": "4D60bmLZb2IZje42JQp0UjYW9Y/RBVRR94ivjNrc", |
| 4 | - "sessionToken": "FwoGZXIvYXdzENf//////////wEaDI+1QF+djlC4HKhgXSLDASLQ79zowPQb14gxxDVD3Due4qV58b2E7S7b2fus/4oOaF3B1+EnZ5ofHKEL3vBnlmzg7Oo37VlbzWh0Ik3QS6XRLg5tf7JxZqZyHhGx0/1k7f6BCZZuoVSBgyEBvGs4VJDZkmWNXv+MT9ytHyl/L1hhuiwqEWFoHJKMwO5jS9QieGJtUl9BP4YKrA1WamiqPZnIkb9TbbNk47Ud8bady5TBO/3u0bBBGL4wkGtAGHPeGSKNy6Ea6gIb9lzpagDN8AKCnSjd5s72BTItHPfO4igQfm5Bl277gKZLytgfzWe4iSPHh4BjmaNVK61zP0zS5wGfD7mcE+X6", | 4 | + "sessionToken": "FwoGZXIvYXdzEEkaDMTw/lUiPUptDH7EBCLDAdFVXAZkmKCB5Fj4jYanKhUHH0iOqXumrbibz4EGubeO5HKz6KCN+EBvJwBbjDpagzkTYdVQHZa8sZAdEX6+41Qyv6bHM0MpEaHZIpt/ku87++qwk47NNlFJn5/iTnif3GwTKf69F2FTh1Y/+qjaP/URN8di0LZAyRonD4UuXwpmZIykWLhj7VCxpyYXBaiKBuE5eRrMQANddl3BROtS5FttRz+GsYXlalrR87UdXAoDFRJhyCpggxZCRe7+b9k3Tge7YiiX5uf2BTItnh1CIWbGHwx0sYdBpnLCZpxg31RU95Le7pW/DBJIYzxoDjjhVbz/lF0WtwIi", |
| 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 |
File mode changed
| ... | @@ -13,7 +13,6 @@ | ... | @@ -13,7 +13,6 @@ |
| 13 | // targetFile: folder2/file.txt | 13 | // targetFile: folder2/file.txt |
| 14 | 14 | ||
| 15 | 15 | ||
| 16 | - | ||
| 17 | var AWS = require('aws-sdk'); | 16 | var AWS = require('aws-sdk'); |
| 18 | AWS.config.update({ region: 'ap-northeast-2' }); | 17 | AWS.config.update({ region: 'ap-northeast-2' }); |
| 19 | 18 | ||
| ... | @@ -73,6 +72,32 @@ var S3 = { | ... | @@ -73,6 +72,32 @@ var S3 = { |
| 73 | }) | 72 | }) |
| 74 | }, | 73 | }, |
| 75 | 74 | ||
| 75 | + // 파일 덮어쓰기 | ||
| 76 | + coverFile: function(bucketName, userId, sourceFile, targetPath, body, callback) { | ||
| 77 | + var pathbody = fs.createReadStream(body); | ||
| 78 | + | ||
| 79 | + if (targetPath != '' && targetPath[targetPath.length - 1] != '/') { | ||
| 80 | + targetPath = targetPath + '/'; | ||
| 81 | + } | ||
| 82 | + var targetFile = targetPath + sourceFile; | ||
| 83 | + | ||
| 84 | + var coverParams = { | ||
| 85 | + Bucket: bucketName, | ||
| 86 | + Key: 'drive/' + userId + '/' + targetFile, | ||
| 87 | + Body: pathbody | ||
| 88 | + }; | ||
| 89 | + | ||
| 90 | + s3.upload(coverParams, function (err, data) { | ||
| 91 | + if (err) { | ||
| 92 | + console.log("Upload Error" + err); | ||
| 93 | + callback(false); | ||
| 94 | + } else { | ||
| 95 | + console.log("Upload Success"); | ||
| 96 | + callback(true); | ||
| 97 | + } | ||
| 98 | + }) | ||
| 99 | + }, | ||
| 100 | + | ||
| 76 | deleteFile: function (bucketName, userId, targetFile, callback) { | 101 | deleteFile: function (bucketName, userId, targetFile, callback) { |
| 77 | // targetFile => folder1/folder2/test.txt | 102 | // targetFile => folder1/folder2/test.txt |
| 78 | var deleteParams = { | 103 | var deleteParams = { |
| ... | @@ -104,10 +129,8 @@ var S3 = { | ... | @@ -104,10 +129,8 @@ var S3 = { |
| 104 | console.log("Download File Error", err); | 129 | console.log("Download File Error", err); |
| 105 | callback(false); | 130 | callback(false); |
| 106 | } else { | 131 | } else { |
| 107 | - if (data) { | 132 | + console.log("Get File Success"); |
| 108 | - console.log("Get File Success"); | 133 | + callback(true, data.Body.toString()); |
| 109 | - callback(true, data.body.toString()); | ||
| 110 | - } | ||
| 111 | } | 134 | } |
| 112 | }) | 135 | }) |
| 113 | }, | 136 | }, |
| ... | @@ -119,8 +142,10 @@ var S3 = { | ... | @@ -119,8 +142,10 @@ var S3 = { |
| 119 | if (result) { | 142 | if (result) { |
| 120 | makeFolder(tempDownloadDir, function(result){ | 143 | makeFolder(tempDownloadDir, function(result){ |
| 121 | if (result) { | 144 | if (result) { |
| 122 | - fs.writeFileSync(tempDownloadDir, data); | 145 | + if (data){ |
| 123 | - callback(true, tempDownloadDir); | 146 | + fs.writeFileSync(tempDownloadDir, data); |
| 147 | + callback(true, tempDownloadDir); | ||
| 148 | + } | ||
| 124 | } | 149 | } |
| 125 | }) | 150 | }) |
| 126 | }else{ | 151 | }else{ |
| ... | @@ -143,10 +168,13 @@ var S3 = { | ... | @@ -143,10 +168,13 @@ var S3 = { |
| 143 | Key: 'drive/' + userId + '/' + targetFile | 168 | Key: 'drive/' + userId + '/' + targetFile |
| 144 | }; | 169 | }; |
| 145 | try { | 170 | try { |
| 146 | - s3.getObject(params).createReadStream().pipe(file); | 171 | + var stream = s3.getObject(params).createReadStream().pipe(file); |
| 147 | - callback(true, tempDownloadDir); | 172 | + stream.on('end', function(){ |
| 173 | + console.log('end!'); | ||
| 174 | + callback(true, tempDownloadDir); | ||
| 175 | + }); | ||
| 148 | }catch(err){ | 176 | }catch(err){ |
| 149 | - console.log('no such file'); | 177 | + console.log('no such file', err); |
| 150 | callback(false); | 178 | callback(false); |
| 151 | } | 179 | } |
| 152 | }else{ | 180 | }else{ | ... | ... |
backend/routes/quick.js
0 → 100644
| 1 | +var express = require('express'); | ||
| 2 | +var router = express.Router(); | ||
| 3 | + | ||
| 4 | + | ||
| 5 | +router.get('/', function(req, res){ | ||
| 6 | + var user_id = req.query.id; | ||
| 7 | + | ||
| 8 | + var sql = 'SELECT * FROM files WHERE updated>date_sub(now(), interval 3 day) AND user_id=(?) ORDER BY updated DESC'; | ||
| 9 | + connection.query(sql, user_id, function(err, result){ | ||
| 10 | + if (err){ | ||
| 11 | + console.log('select error'); | ||
| 12 | + res.send({error: 'quick error'}) | ||
| 13 | + }else{ | ||
| 14 | + res.send(result); | ||
| 15 | + } | ||
| 16 | + }) | ||
| 17 | +}) | ||
| 18 | + | ||
| 19 | + | ||
| 20 | +module.exports = router; | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -2,34 +2,10 @@ | ... | @@ -2,34 +2,10 @@ |
| 2 | "requires": true, | 2 | "requires": true, |
| 3 | "lockfileVersion": 1, | 3 | "lockfileVersion": 1, |
| 4 | "dependencies": { | 4 | "dependencies": { |
| 5 | - "axios": { | 5 | + "readline": { |
| 6 | - "version": "0.19.2", | 6 | + "version": "1.3.0", |
| 7 | - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", | 7 | + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", |
| 8 | - "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", | 8 | + "integrity": "sha1-xYDXfvLPyHUrEySYBg3JeTp6wBw=" |
| 9 | - "requires": { | ||
| 10 | - "follow-redirects": "1.5.10" | ||
| 11 | - } | ||
| 12 | - }, | ||
| 13 | - "debug": { | ||
| 14 | - "version": "3.1.0", | ||
| 15 | - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", | ||
| 16 | - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", | ||
| 17 | - "requires": { | ||
| 18 | - "ms": "2.0.0" | ||
| 19 | - } | ||
| 20 | - }, | ||
| 21 | - "follow-redirects": { | ||
| 22 | - "version": "1.5.10", | ||
| 23 | - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", | ||
| 24 | - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", | ||
| 25 | - "requires": { | ||
| 26 | - "debug": "=3.1.0" | ||
| 27 | - } | ||
| 28 | - }, | ||
| 29 | - "ms": { | ||
| 30 | - "version": "2.0.0", | ||
| 31 | - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", | ||
| 32 | - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" | ||
| 33 | } | 9 | } |
| 34 | } | 10 | } |
| 35 | } | 11 | } | ... | ... |
-
Please register or login to post a comment