Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
gongruixue committed Aug 5, 2016
0 parents commit 4c6e293
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.idea
node_modules/
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
file-receiver
===
An http server to receive files posted from remote clients,
by listening on '/receiver'.

### Usage
```bash
fisrcv <port> # port defaults to 8999
```
7 changes: 7 additions & 0 deletions bin/filercv.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/usr/bin/env node
var server = require('../server');

var PORT = process.argv[2] || 8999;
server.listen(PORT, function(){
console.log('file receiver listening on port ' + PORT);
});
15 changes: 15 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"name": "file-receiver",
"version": "1.0.0",
"description": "an http server to receive files pushed from remote client",
"main": "fis-receiver.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "gongruixue",
"license": "ISC",
"dependencies": {
"formidable": "^1.0.17",
"mkdirp": "^0.5.1"
}
}
42 changes: 42 additions & 0 deletions server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
var http = require('http'),
path = require('path'),
formidable = require('formidable'),
mkdirp = require('mkdirp');

var server = http.createServer(function(req, res){
function onError(msg){
res.statusCode = 500;
res.statusMessage = msg;
res.end();
}
function onSuccess(){
res.end();
}

if(req.url == '/receiver' && req.method.toLowerCase() == 'post'){
var form = new formidable.IncomingForm();
var to = '';
form.on('field', function onField(name, value){
if(name == 'to'){
to = value;
form.removeListener('field', onField);
}
});
form.on('fileBegin', function(name, file){
try{
mkdirp.sync(path.dirname(to));
file.path = to;
}catch(e){
onError('cannot make dir ' + to + ' to save file ' + name);
form.emit('aborted');
}

});
form.parse(req, function(err, fields, file){
if(err) onError(err.message);
else onSuccess();
});
}
});

module.exports = server;

0 comments on commit 4c6e293

Please sign in to comment.