Загрузить файл с помощью формы подключения - PullRequest
1 голос
/ 10 января 2012

Я пытался загрузить файл с connect-form, но если я хочу загрузить, я должен отключить bodyParser() в app.js, если я сохраню bodyParser(), будет ошибка: loading forever
Это мое app.js:

    app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set('view option', { layout: false });

//  app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(require('stylus').middleware({ src: __dirname + '/public' }));

app.use(express.static(__dirname + '/public'));
app.use(express.cookieParser());
app.use(express.session({secret: 'secrect', store: MemStore({
reapInterval: 60000 * 10
})}));
app.use(app.router);
});

Это код, который я звоню upload file

app.post('/album/upload', function( req, res) {
    req.form.complete(function(err, fields, files) {
    if (err) { next(err); console.log('error upload') }
        else {
            console.log(fields);
            console.log('---------------');
            console.log(files);
        res.send('upload successfull');
        }
     });
});

Итак, как мне сделать, чтобы отключить bodyParser(), когда я звоню загрузить файл, или в любом случае, чтобы помочь мне загрузить файл, не получить ошибку.

1 Ответ

1 голос
/ 10 января 2012

Две вещи:

  • Экспресс основан на соединении.
  • bodyParser основан на грозном, а форма соединения основана на грозном.

Наличие bodyParser и connect-form похоже на двойной анализ тела запроса, но во второй раз сетевой поток пуст, не сможет ничего проанализировать, вечно ожидая ввода.

Эта проблема имеетподнялся, когда был выпущен connect 2.0, с расширенными возможностями обработки запросов, состоящих из нескольких частей, что делает форму подключения устаревшей.

Файлы должны быть загружены в любом случае только с bodyParser и храниться в req.files

Взгляните на: https://github.com/senchalabs/connect/blob/master/lib/middleware/multipart.js (Это то, что выражаютделает с bodyParser, когда он встречает запрос из нескольких частей.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...