Во-первых, это правда, что учебник передает запрос и ответ в неправильном порядке. Первое, что я сделал, это изменить порядок от (response, request)
до (request, response)
. (Обязательно делайте это везде). Причина этого в том, что я уверен, что функция onRequest
в HTTP
createServer()
передает их в этом заказе.
Как только я это сделал, у меня все еще была ошибка. Но, войдя информацию, поступающую через от моей формы
...
var form = new formidable.IncomingForm();
console.log("About to parse...");
form.parse(request, function(error, fields, files) {
console.log("Parsing done.");
console.dir(request.headers);
console.log(fields);
console.log(files);
...
Я заметил, что ключ fields
содержал то, что я искал, и ключ files
был пуст.
{ upload: '2015-03-08 14.54.06.jpg', 'Upload File': 'Submit' }
{}
Отсюда ясно, что я мог бы использовать fields.upload
. С помощью этой функции была возвращена другая ошибка, которая не была бы строкой (или, по крайней мере, не была бы той, которая была бы приемлемой). toString()
, похоже, не работает, либо, так что я использовал альтернативное преобразование:
fs.rename(fields.upload + "", "img/img.jpg", function(error) {
...
}
который не является идеальным, но он сделал трюк.
Это было сделано с [email protected]
и [email protected]
. Я не знаю, будет ли мое решение работать для всех, но, надеюсь, он может указать некоторым из вас в правильном направлении. Несоответствие, вероятно, связано с тем, что он использовал более старые версии узла и грозным в учебнике.