Thursday, 8 June 2017

Cannot read property 'path' of undefined in Node.js

I am trying to create an HTTP server with GET and POST for the user upload files. But the problem is that while running the server, when I upload one image the error appears.

My code :

// Request Handlers (will handle all requests that happen)

// Allows Node.js to make use of a non-blocking operation: exec ();
var exec = require("child_process").exec;
var querystring = require("querystring");
fs = require("fs");
var formidable = require("formidable");

function start(response, postData) {
    console.log("Request handler 'start' was called");
    var body = '<html>' +
    '<head>' +
    '<meta http-equiv = "Content-Type" content = "text/html";'+
    'charset="UTF-8"/>' +
    '</head>' +
    '<body>' +
    '<form action = "/upload" enctype = "multipart/form-data"' +
    'method = "post">' +
    '<input type ="file" name = "upload multiple = "multiple">' +
    '<input type = "submit" value ="Upload file" />' +
    '</form>' +
    '</body>' +
    '</html>';

    response.writeHead(200, {"Content-Type" : "text/html"});
    response.write(body);
    response.end();
}

    // What is being passed between router.js and requestHandler.js is the entire body of the POST data request.

function upload(response, request) {
    console.log("Request handler 'upload' was called");

    var form = new formidable.IncomingForm();
    console.log("about to parse");
    form.parse(request, function(error, fields, files) { 
    console.log("parsing done");

    /*Possible error on Windows systems; tried to rename to an already existing file*/

    fs.rename(files.upload.path, "/tmp/test.png", function(err) {
        if(err) {
            fs.unlink("/tmp/test.png");
            fs.rename(files.upload.path, "/tmp/test.png");
        }
    });
    response.writeHead(200, {"Content-Type" : "text/plain"});
    response.write("You've sent the text : " + querystring.parse(postData).text);
    response.write("\nHello Upload");
    response.end();
});
}

function show(response) {
    console.log("Request handler 'show' was called.");
    fs.readFile("/tmp/test.png", "binary", function(error,file) {
        if(error) {
            response.writeHead(500, {"Content-Type" : "text/plain"});
            response.write(err + "\n");
            response.end();
        } else {
            response.writeHead(200, {"Content-Type" : "image/png"});
            response.write(file, "binary");
            reponse.end();
        }
    });
}
exports.start = start;
exports.upload = upload;
exports.show = show;

And then happens the error, and he points out to :

fs.rename(files.upload.path, "/tmp/test.png", function(err)

Cannot read property 'path' of undefined



via Monteiro

No comments:

Post a Comment