expressjs / connect-multiparty

connect middleware for multiparty

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

req.files is an empty object

ralyodio opened this issue · comments

I'm using express 4

We need more detail. I use express 4 and this library and req.files is not empty when I upload a file.

I did exactly like example.

I have moved on to using it this way, which does work:

    var multipart = require('connect-multiparty'),

    app.use(multipart({
        uploadDir: config.tmp
    }));

This works, but now is exposed on every method. I tried the middlewareMultipart but it gave me empty files object.

Here's the method that wasn't working for me:

var multipart = require('connect-multiparty'),
          middlewareMultipart = multipart();

app.route('/api/uploads')
    .post(middleware.auth, middlewareMultipart, uploads.create);

Hm. I tried your app.route and it still worked. You may have some middleware that is conflicting, so when you moved it to app.use you moved this middleware above it. Can you provide a full example app where it does not work?

/**
 * Create file upload
 */
exports.create = function (req, res, next) {
    var data = _.pick(req.body, 'name', 'description')
        , uploadPath = path.normalize(cfg.data + '/uploads')
        , file = req.files.file;

    /**
     * todo:
     * if image, resize tmp image using imagemagick to max width/height
     * create random filename
     * move tmp file to random filename
     * if avatar, update user with random filename for picture attribute
     * if job, update job with random filename for logo attribute
     * if resume, update user with random filename for resume attribute
     * send url back as response
     */
    console.log(file.name); //file is undefined
    console.log(uploadPath);
};



var multipart = require('connect-multiparty')
    , multipartMiddleware = multipart();


/**
 * Application routes
 */
module.exports = function (app) {

    app.route('/api/uploads')
        .post(middleware.auth, multipartMiddleware, uploads.create);

};

@chovy something I can run. The issue is likely some middleware conflict, but you left out all your middleware from what you posted.

@chovy please submit a pull request with a failing test case. This is a simple enough module that I think it is reasonable to ask for that. We're all volunteers here, please make it easier for us to help you.

Thanks. I know its not ideal. I don't have an isolated use case, as this boilerplate code is all over the place. Maybe if you could get it working with this generator, you could tell me where I should put it.

https://github.com/DaftMonk/generator-angular-fullstack

It seems to only work when I add it globally to ./lib/config/express.js

Maybe if you could get it working with this generator

Sorry not willing to do that work.

I understand. Let me put up a working demo.

I'm going to close this since I haven't heard back from you. Feel free to post a comment, though.