Skip to content

Instantly share code, notes, and snippets.

@alepez
Last active September 3, 2022 11:04
Show Gist options
  • Save alepez/9205394 to your computer and use it in GitHub Desktop.
Save alepez/9205394 to your computer and use it in GitHub Desktop.
nodejs file transfer with http post
var request = require('request');
var path = require('path');
var fs = require('fs');
var filename = process.argv[2];
var target = 'http://localhost:3000/upload/' + path.basename(filename);
var rs = fs.createReadStream(filename);
var ws = request.post(target);
ws.on('drain', function () {
console.log('drain', new Date());
rs.resume();
});
rs.on('end', function () {
console.log('uploaded to ' + target);
});
ws.on('error', function (err) {
console.error('cannot send file to ' + target + ': ' + err);
});
rs.pipe(ws);
var express = require('express');
var http = require('http');
var path = require('path');
var fs = require('fs');
var app = express();
app.set('port', process.env.PORT || 3000);
app.use(express.logger('dev'));
app.use(express.methodOverride());
app.use(app.router);
app.use(express.errorHandler());
app.post('/upload/:filename', function (req, res) {
var filename = path.basename(req.params.filename);
filename = path.resolve(__dirname, filename);
var dst = fs.createWriteStream(filename);
req.pipe(dst);
dst.on('drain', function() {
console.log('drain', new Date());
req.resume();
});
req.on('end', function () {
res.send(200);
});
});
http.createServer(app).listen(app.get('port'), function () {
console.log('Express server listening on port ' + app.get('port'));
});
@brugnara
Copy link

Thank you for sharing! 👍

@ypy-pasha
Copy link

C:\Program Files\nodejs\node_modules\express\lib\express.js:108
throw new Error('Most middleware (like ' + name + ') is no longer bundled
with Express and must be installed separately. Please see https://github.com/sen
chalabs/connect#middleware.');
^

Error: Most middleware (like logger) is no longer bundled with Express and must
be installed separately. Please see https://github.com/senchalabs/connect#middle
ware.
at Function.get (C:\Program Files\nodejs\node_modules\express\lib\express.js
:108:13)
at Object. (C:\Program Files\nodejs\api\1.js:9:17)
at Module._compile (module.js:660:30)
at Object.Module._extensions..js (module.js:671:10)
at Module.load (module.js:573:32)
at tryModuleLoad (module.js:513:12)
at Function.Module._load (module.js:505:3)
at Function.Module.runMain (module.js:701:10)
at startup (bootstrap_node.js:190:16)
at bootstrap_node.js:662:3

@kampana
Copy link

kampana commented Feb 4, 2019

C:\Program Files\nodejs\node_modules\express\lib\express.js:108
throw new Error('Most middleware (like ' + name + ') is no longer bundled
with Express and must be installed separately. Please see https://github.com/sen
chalabs/connect#middleware.');
^

Error: Most middleware (like logger) is no longer bundled with Express and must
be installed separately. Please see https://github.com/senchalabs/connect#middle
ware.
at Function.get (C:\Program Files\nodejs\node_modules\express\lib\express.js
:108:13)
at Object. (C:\Program Files\nodejs\api\1.js:9:17)
at Module._compile (module.js:660:30)
at Object.Module._extensions..js (module.js:671:10)
at Module.load (module.js:573:32)
at tryModuleLoad (module.js:513:12)
at Function.Module._load (module.js:505:3)
at Function.Module.runMain (module.js:701:10)
at startup (bootstrap_node.js:190:16)
at bootstrap_node.js:662:3

Removing the following lines made the code work:
app.use(express.logger('dev'));
app.use(express.methodOverride());
app.use(app.router);
app.use(express.errorHandler());

@renaudfractale
Copy link

Merci cela fonctionne chez moi

@TaxMachine
Copy link

why creating an http server when express literally does that ???

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment