Я использую node-formidable для обработки данных формы в приложении Express/Nodejs. Я отправляю POST-переменные из расширения POSTman Chrome. (кстати, http://httpbin.org/post работает нормально)
Если я использую multipart/form-data, все в порядке.
Если я использую urlencoded, обратный вызов form.parse никогда не срабатывает и блокирует все ответы. он просто блокирует метод post.
обязательно:
var formidable = require('formidable');
var http = require('http');
var util = require('util');
метод публикации:
app.post("/items",function(req,res){
var form = new formidable.IncomingForm();
form.parse(req,function(err,fields,files){
console.log(fields);
res.send("posted");
});
});
экспресс-настройки:
app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart());
app.use(express.cookieParser());
app.use(express.static(__dirname + '/public'));
app.use(express.cookieSession({secret:"wow_so_secret_such_code_gud_layers"}));
app.use(passport.initialize());
app.use(passport.session());
app.use(express.methodOverride());
есть ли какой-нибудь трюк для использования urlencoded?
может быть важно;
{
domain: null,
_events: {},
_maxListeners: 10,
error: null,
ended: false,
maxFields: 1000,
maxFieldsSize: 2097152,
keepExtensions: false,
uploadDir: '/var/folders/pl/xnl7cxpj075chytyf_t7f1480000gn/T/',
encoding: 'utf-8',
headers: null,
type: null,
hash: false,
bytesReceived: null,
bytesExpected: null,
_parser: null,
_flushing: 0,
_fieldsSize: 0,
openedFiles: []
}
как urlencoded, так и multipart возвращают значение null.
formidable
для анализа входящей формы, вам не нужно использоватьmultipart()
- person vmx   schedule 18.12.2013form.encoding = 'utf-8';
form.type = 'multipart';
, прежде чем делатьform.parse()
- person vmx   schedule 18.12.2013enctype="multipart/form-data"
в тег формы html. - person vmx   schedule 18.12.2013multipart()
, я упомянул, чтобы не использоватьmultipart
- person vmx   schedule 18.12.2013