Upload file using NodeJS and node-formidable

18,302

Solution 1

The problem is the that files.upload is not the content of the file, it is an instance of the File class from node-formidable.

Look at:

https://github.com/felixge/node-formidable/blob/master/lib/file.js

Instead of trying to write the file to disk again, you can just access the path to uploaded file like this and use fs.rename() to move it where you want:

fs.rename(files.upload.path, 'yournewfilename', function (err) { throw err; });

Solution 2

Is the form set to enctype="multipart/form-data"?

I've only used formidable with Express - the Express example works fine:

https://github.com/visionmedia/express/tree/master/examples/multipart

Share:
18,302

Related videos on Youtube

KingDave
Author by

KingDave

Updated on June 16, 2020

Comments

  • KingDave
    KingDave over 3 years

    I succeed uploading file using node.js and the formidable module yet, the file that got save on the disk is in some kind of a bad format ( bad encoding) e.g. if I upload an image I can't view it, if I upload a txt file gedit provide the following msg: "gedit has not been able to detect the character encoding. Please check that you are not trying to open a binary file. Select a character encoding from the menu and try again."

    here is the code:

    form.encoding = 'utf-8';
    form.parse(req, function(err, fields, files) {
        fs.writeFile('test.js', files.upload,'utf8', function (err) {
              if (err) throw err;
              console.log('It\'s saved!');
        });
    });
    

Related