# Connect Form |
## index | index.js
Module dependencies. |
    var utils = require('connect/utils'),
        formidable = require('formidable');
Setup form with the given `options`. ## Options `encoding` Encoding used for incoming forms. Defaults to utf8 `uploadDir` Directory to save uploads. Defaults to “/tmp” `keepExtensions` Include original extensions. Defaults to `false` ## Examples
     var form = require('connect-form');
     var server = connect.createServer(
            form({ keepExtensions: true }),
            function(req, res, next){
                // Form was submitted
                if (req.form) {
                    // Do something when parsing is finished
                    // and respond, or respond immediately
                    // and work with the files.
                    req.form.complete(function(err, fields, files){
                        res.writeHead(200, {});
                        if (err) res.write(JSON.stringify(err.message));
                        res.write(JSON.stringify(fields));
                        res.write(JSON.stringify(files));
                        res.end();
                    });
                // Regular request, pass to next middleware
                } else {
                    next();
                }
            }
        );
## param: Object options return: Function api: public |
    module.exports = function(options){
        options = options || {};
        return function(req, res, next){
            if (formRequest(req)) {
                var callback = function(){},
                    form = req.form = new formidable.IncomingForm;
                utils.merge(form, options);
                form.complete = function(fn){ callback = fn; };
                form.parse(req, function(){
                    callback.apply(this, arguments);
                });
            }
            next();
        };
    };