Skip to content

Commit

Permalink
Fix empty response
Browse files Browse the repository at this point in the history
  • Loading branch information
Nicolas Ritouet committed Jan 17, 2014
1 parent 6ddaa70 commit 03ecd56
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 16 deletions.
47 changes: 32 additions & 15 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ function Fileupload(options) {
directory: this.config.directory || 'upload',
fullDirectory: __dirname + "/../../public/" + (this.config.directory || 'upload') + "/"
};

// If the directory doesn't exists, we'll create it
try {
fs.statSync(this.config.fullDirectory).isDirectory();
} catch (er) {
Expand Down Expand Up @@ -54,61 +56,75 @@ Fileupload.prototype.handle = function (ctx, next) {

if (req.method === "POST" || req.method === "PUT") {
var form = new formidable.IncomingForm(),
subdir,
resultFiles = [];
var uploadDir = this.config.fullDirectory;
uploadDir = this.config.fullDirectory,
resultFiles = [],
remainingFile = 0,
subdir;


// Will send the response if all files have been processed
var processDone = function(err) {
if (err) return ctx.done(err);
remainingFile--;
if (remainingFile === 0) {
debug("Response sent: ", resultFiles);
return ctx.done(null, resultFiles);
}
}

// If subdir was sent as query param, concat it to the default uploadDir
// If a subdir was sent as query param, concat it to the default uploadDir
if (typeof req.query !== 'undefined' && req.query.subdir) {
subdir = req.query.subdir;
debug("Subdir given: %j", req.query.subdir);
debug("Subdir given: %j", subdir);
uploadDir = uploadDir.concat(req.query.subdir).concat("/");
// create the directory if it does not exist

// If the sub-directory doesn't exists, we'll create it
try {
fs.statSync(uploadDir).isDirectory();
} catch (er) {
fs.mkdir(uploadDir);
}
}
form.uploadDir = uploadDir;

form.uploadDir = uploadDir;

form.parse(req)
.on('file', function(name, file) {
debug("File %j received", file.name);

if (self.events.upload) {
self.events.upload.run(ctx, {url: ctx.url, fileSize: file.size, fileName: ctx.url}, function(err) {
if (err) return ctx.done(err);
if (err) return processDone(err);
fs.rename(file.path, uploadDir + file.name, function(err) {
if (err) return ctx.done(err);
if (err) return processDone(err);
debug("File renamed after event.upload.run: %j", err || uploadDir + file.name);
self.store.insert({filename: file.name, subdir: subdir, creationDate: new Date().getTime()}, function(err, result) {
if (err) return processDone(err);
debug('stored after event.upload.run %j', err || result || 'none');
resultFiles.push(result);
processDone();
});

});
});
} else {
fs.rename(file.path, uploadDir + file.name, function(err) {
if (err) return ctx.done(err);
if (err) return processDone(err);
debug("File renamed: %j", err || uploadDir + file.name);
self.store.insert({filename: file.name, subdir: subdir, creationDate: new Date().getTime()}, function(err, result) {
if (err) return ctx.done(err);
if (err) return processDone(err);
debug('stored %j', err || result || 'none');
resultFiles.push(result);
processDone();
});
});
}
}).on('fileBegin', function(name, file) {
remainingFile++;
debug("Receiving a file: %j", file.name);
}).on('error', function(err) {
debug("Error: %j", err);
return ctx.done(err);
}).on('end', function() {
debug('Upload completed %j', resultFiles || 'none');
return ctx.done(null, resultFiles);
return processDone(err);
});
return req.resume();
} else if (req.method === "GET") {
Expand Down Expand Up @@ -160,6 +176,7 @@ Fileupload.prototype.del = function(ctx, next) {
var self = this,
fileId = ctx.url.split('/')[1],
uploadDir = this.config.fullDirectory;

this.store.find({id: fileId}, function(err, result) {
if (err) return ctx.done(err);
debug('found %j', err || result || 'none');
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "dpd-fileupload",
"description": "File uploader for Deployd",
"version": "0.0.6",
"version": "0.0.7",
"author": "Nicolas Ritouet <[email protected]>",
"dependencies": {
"formidable": "~1.0.14",
Expand Down

0 comments on commit 03ecd56

Please sign in to comment.