Skip to content

Instantly share code, notes, and snippets.

@PaulMougel
Last active May 1, 2024 12:38
Show Gist options
  • Save PaulMougel/7511372 to your computer and use it in GitHub Desktop.
Save PaulMougel/7511372 to your computer and use it in GitHub Desktop.
File upload in Node.js to an Express server, using streams
// node: v0.10.21
// request: 2.27.0
var request = require('request');
var fs = require('fs');
var r = request.post("http://server.com:3000/");
// See http://nodejs.org/api/stream.html#stream_new_stream_readable_options
// for more information about the highWaterMark
// Basically, this will make the stream emit smaller chunks of data (ie. more precise upload state)
var upload = fs.createReadStream('f.jpg', { highWaterMark: 500 });
upload.pipe(r);
var upload_progress = 0;
upload.on("data", function (chunk) {
upload_progress += chunk.length
console.log(new Date(), upload_progress);
})
upload.on("end", function (res) {
console.log('Finished');
})
// node: v0.10.7
// express: 3.4.4
var fs = require('fs');
var express = require('express');
var app = express();
app.post('/', function (req, res, next) {
req.pipe(fs.createWriteStream('./uploadFile'));
req.on('end', next);
});
app.listen(3000);
@clewertonx1
Copy link

THANKS <3

@PandianSF
Copy link

hi I have one doubt how to save the data in the file in express.js

@dosipyanCedrus
Copy link

dosipyanCedrus commented Apr 1, 2024

How to to open uploaded file?
The req.on('end', next) means that piping is finished.
What if it is needed to open the file when it is uploaded?

UPD

var upload fs.createWriteStream('./uploadFile')
await req.pipe(upload);
upload.on('close', () => {
     // upload is ready
}

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