Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to rename files parsed by Formidable?

How does one go about naming files parsed by Formidable in Node? Currently my files are saving as '7c9d182a9892bb7588b49ea9d364efd0.pdf', I would much prefer the original file names.

Anyone know how to do this?

like image 382
Mark Nguyen Avatar asked Dec 02 '11 17:12

Mark Nguyen


People also ask

How do I rename an uploaded file?

You can simply change the name of the file by changing the name of the file in the second parameter of move_uploaded_file . $temp = explode(".", $_FILES["file"]["name"]); $newfilename = round(microtime(true)) .


1 Answers

This is how I did it (check out the .on(file'...) function):

// import required modules
    var express = require('express');
    var formidable = require("formidable"); // used for parsing form data
    var fs = require('fs');

// prevent bodyParser from handling multipart forms (ie only handle get and post requests)
    delete express.bodyParser.parse['multipart/form-data'];

// create server
    var app = express.createServer();

// connect middleware
    app.configure(function() {
        // creates body object on request object
            app.use(express.bodyParser());
            app.use(express.methodOverride());
        // used to display static files such as css
            app.use(express.static(__dirname + '/static'));
    });

// enable and define views
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade'); 

//******************************
//* create routes
//******************************

// file upload handling
    app.get('/photos/new', function(request, response) {
        response.render('photos/new');
    });
    app.post('/photos', function(request, response) {
        console.log('in /photos handler');
        var form = new formidable.IncomingForm();

        form.uploadDir = __dirname + '/static/upload/photos/';

        form.on('file', function(field, file) {
            //rename the incoming file to the file's name
                fs.rename(file.path, form.uploadDir + "/" + file.name);
        });

        form.on('error', function(err) {
            console.log("an error has occured with form upload");
            console.log(err);
            request.resume();
        });

        form.on('aborted', function(err) {
            console.log("user aborted upload");
        });

        form.on('end', function() {
            console.log('-> upload done');
        });

        form.parse(request, function() {
                response.render('photos/new');
        });
    });

// start our server
    app.listen(8888);
like image 100
br3nt Avatar answered Oct 20 '22 06:10

br3nt