Upload files with node.js

express, javascript, node.js

Solution

I do recommend you to use awesome module https://github.com/domharrington/fileupload for handling file uploads in node/express.

var fileupload = require('fileupload').createFileUpload('/uploadDir').middleware

app.post('/upload', fileupload, function(req, res) {
  // files are now in the req.body object along with other form fields
  // files also get moved to the uploadDir specified
})

Problem

I have this code in order to upload files with node.js: ``` app.use(express.bodyParser()); // or, as `req.files` is only provided by the multipart middleware, you could // add just that if you're not concerned with parsing non-multipart uploads, // like: app.use(express.multipart()); app.get('/',function(req,res){ fs.readFile('uploadHTML.html',function (err, data){ res.writeHead(200, {'Content-Type': 'text/html','Content-Length':data.length}); res.write(data); res.end(); }); }); app.post('/upload',function(req,res) { console.log(req.files); fs.readFile(req.files.displayImage.path, function (err, data) { // ... var newPath = __dirname; fs.writeFile(newPath, data, function (err) { res.redirect("back"); }); }); }); ``` Here is the HTML file: ``` <html> <head> <title>Upload Example</title> </head> <body> <form id="uploadForm" enctype="multipart/form-data" action="/upload" method="post"> <input type="file" id="userPhotoInput" name="displayImage" /> <input type="submit" value="Submit"> </form> <span id="status" /> <img id="uploadedImage" /> </body> </html> ``` When I upload the file, it gives me the next error: ``` TypeError: Cannot read property 'displayImage' of undefined at c:\NodeInstall\nodejs\express.js:42:22 at callbacks (c:\NodeInstall\nodejs\node_modules\express\lib\router\index.js:164:37) at param (c:\NodeInstall\nodejs\node_modules\express\lib\router\index.js:138:11) at pass (c:\NodeInstall\nodejs\node_modules\express\lib\router\index.js:145:5) at Router._dispatch (c:\NodeInstall\nodejs\node_modules\express\lib\router\index.js:173:5) at Object.router (c:\NodeInstall\nodejs\node_modules\express\lib\router\index.js:33:10) at next (c:\NodeInstall\nodejs\node_modules\express\node_modules\connect\lib\proto.js:193:15) at Object.expressInit [as handle] (c:\NodeInstall\nodejs\node_modules\express\lib\middleware.js:30:5) at next (c:\NodeInstall\nodejs\node_modules\express\node_modules\connect\lib\proto.js:193:15) at Object.query [as handle] (c:\NodeInstall\nodejs\node_modules\express\node_modules\connect\lib\middleware\query.js:45:5) ``` What could be the reason?

Original source

Related problems