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
Post a Comment