OSDN Git Service

Modified: Upload, Command execution
[eos/zephyr.git] / server / api / v1 / fileUpload / index.js
1 /*
2 var express = require('express');
3 var router = express.Router();
4 var multer = require('multer');
5
6 var app = express();
7
8 router.post('/', multer({ dest: 'uploads/'}), function(req, res, next) {
9 res.send(JSON.stringify('hoge'));
10 });
11 */
12
13 'use strict';
14 var express    = require('express');
15 var router     = express.Router();
16 var path       = require('path');
17 var formidable = require('formidable');
18 var util = require('util');
19 var db = require(__dirname + '/../../../../server/class/DB').instance;
20 var uuid = require('node-uuid');
21 var fs = require('fs');
22 var db = require(__dirname + '/../../../../server/class/DB').instance;
23
24 router.post('/', function(req, res) {
25   console.log('router post received');
26   var form = new formidable.IncomingForm();
27   var filesInfo = [];
28
29   console.log('router post received: OK formidable' );
30
31   form.uploadDir = __dirname + '/../../../../user-specific-files/tmp';
32
33   /*
34   form.on('fileBegin', function(parentDirectory, file) {
35   });
36 */
37   form.parse(req, function(err, parentDirectory, file){
38     res.writeHead(200, {'content-type': 'text/html'});
39     res.write('received upload:\n\n');
40     res.write(file+'¥n');
41     res.write(util.inspect({files: file})+'¥n');
42     res.end(util.inspect({fields: parentDirectory, files: file}));
43   });
44
45   form.on('file', function(name, file) {
46     var filepath=file.path;
47     var filebase=file.name;
48     console.log(filepath);
49     console.log(filebase);
50     console.log(process.env['WorkspacePATH']+'/'+filebase);
51     //fs.rename(db.dbPath+parentDirectory+filepath, db.dbPath+parentDirectory+filebase, function (err) {
52     fs.rename(filepath, process.env['WorkspacePATH']+'/'+filebase, function (err) {
53       if (err) throw err;
54       console.log('renamed complete');
55     });
56     //db.createFile(filebase, parentDirectory);
57     db.createFile(filebase, '/');
58   });
59
60   console.log('router post received: parse OK');
61
62   form.on('end', function(err, parentDirectory, file) {
63     console.log('end');
64   });
65
66   /*
67   form.on('field', function(field, value) {
68   console.log(field, value);
69   fields.push([field, value]);
70 })
71 .on('file', function(field, file) {
72 console.log(field, file);
73 files.push([field, file]);
74 })
75 .on('end', function() {
76 console.log('-> upload done');
77 res.writeHead(200, {'content-type': 'text/plain'});
78 res.write('received fields:\n\n '+util.inspect(fields));
79 res.write('\n\n');
80 res.end('received files:\n\n '+util.inspect(files));
81 });
82
83 form.on('error', function(err) {
84 console.errro(err);
85 var i = {
86 status: 'error',
87 message: err
88 }
89 res.send(i);
90 });
91 */
92
93 /*
94 form.parse(req, function(err, fields, files) {
95   var workspace;
96   var parentDirectory = fields['parentDirectory'];
97   if(process.env['NODE_ENV'] === 'debug') {
98     workspace = __dirname + '/../../../../user-specific-files/workspace.debug/';
99   } else {
100     workspace = __dirname + '/../../../../user-specific-files/workspace/';
101   }
102   var promises = [];
103   Object.keys(files).forEach(function(key) {
104     var file = files[key];
105     var fileName = file.name;
106     var tmpPath = file.path;
107     var info = {
108       parentDirectory: parentDirectory,
109       fileName: fileName,
110       tmpPath: tmpPath,
111       fileId: null
112     };
113
114     filesInfo.push(info);
115     promises.push(db.createFile(fileName, parentDirectory)); // file作成に成功したらresolve, 失敗したらreject
116   });
117
118   Promise.all(promises)
119   .catch(function(err) {
120     filesInfo.forEach(function(fileInfo) {
121       fs.unlinkSync(fileInfo.tmpPath);
122     });
123
124     var info = {
125       status: 'error',
126       messag: err.message
127     };
128
129     res.send(info);
130   })
131   .then(function(fileIds) {
132     fileIds.forEach(function(fileId, i) {
133       filesInfo[i].fileId = fileId;
134       fs.renameSync(filesInfo[i].tmpPath, workspace + fileId);
135       delete filesInfo[i].tmpPath;
136     })
137     var info = {
138       status: 'success',
139       info: filesInfo
140     };
141     res.send(info);
142   });
143 });
144 */
145
146
147
148 });
149
150 module.exports = router;