Upload file with node.js, get more than one file -


i have code in order upload single file node.js, using express , multer:

var express = require("express"); var app = express(); var fs = require("fs"); var multer  = require('multer'); var upload = multer({ dest: 'uploads/' });  // process upload file app.post('/file_upload', upload.single('single-file'), function(request, response) {      var filename = request.file.originalname;     var filepath = request.file.path;     var file = __dirname + "/uploads/" +  filename;      fs.readfile(filepath, function(err, data) {         fs.writefile(file, data, function(err) {             if (err) {                 console.log(err);             } else {                 responsedata = {                     'message' : 'file uploaded successfully',                     'filename' : filename                 };             }              response.end(json.stringify(responsedata));         })     }); }); 

here html file:

<!doctype html> <html>     <head>         <title>file uploading form</title>     </head>     <body>         <h3>file upload:</h3>         select file upload: <br />         <form action="http://localhost:8081/file_upload" method="post"        enctype="multipart/form-data">             <input type="file" name="single-file" size="50" />             <br />             <input type="submit" value="upload file" />         </form>     </body> </html> 

after running code, able uploaded file. problem is, keep getting 2 files uploaded in "uploads" folder each time. 1 file original name, , 1 strange name 2787ab2db292d90bd2da83a6a6ce1700.

is normal? how can rid of other file when upload?

the problem you're creating new file uploaded file.
solution rename uploaded file temporary name original name:

var express = require("express"); var app = express(); var fs = require("fs"); var multer  = require('multer'); var uploadsfolder = __dirname + '/uploads/';  // defining real upload path var upload = multer({ dest: uploadsfolder }); // setting path multer  // process upload file app.post('/file_upload', upload.single('single-file'), function(request, response) {      var filename = request.file.originalname; // original file name     var file = request.file.path; // real file path temporary name      // renaming real file it's original name     fs.rename(file, uploadsfolder + filename, function (err) {       if (err) {         console.log(err);         response.json({success:false, message: err});         return;       }        response.json({success:true, message: 'file uploaded successfully', filename: filename});     }); }); 

or make multer upload temporary folder , copy or move uploads folder:

install fs extra:

npm install --save fs.extra 

and

var express = require("express"); var app = express(); var fs = require('fs.extra'); // functionality var multer  = require('multer'); var uploadsfolder = __dirname + '/uploads/';  // defining real upload path var tempfolder = __dirname + '/tmp/'; // folder temporary files, must exist var upload = multer({ dest: tempfolder }); // setting path multer  // process upload file app.post('/file_upload', upload.single('single-file'), function(request, response) {      var filename = request.file.originalname; // original file name     var file = request.file.path; // real file path temporary name      // renaming real file it's original name     fs.move(file, uploadsfolder + filename, function (err) {       if (err) {         console.log(err);         response.json({success:false, message: err});         return;       }        response.json({success:true, message: 'file uploaded successfully', filename: filename});     }); }); 

Comments