Първо, вярно е, че урокът предава заявка и отговор в грешен ред. Първото нещо, което направих, е да променя реда от (response, request)
на (request, response)
. (Уверете се, че правите това навсякъде). Причината за това е, че съм почти сигурен, че функцията onRequest
в createServer()
на HTTP
ги предава в този ред.
След като го направих, все още получавам същата грешка. Но като регистрирам информацията, идваща от моя формуляр
...
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]
. Не знам дали моето решение ще работи за всички, но се надявам, че може да насочи някои от вас в правилната посока. Несъответствието вероятно се дължи на факта, че той е използвал по-стари версии на node и formidable в урока.
person
Jamie Counsell
schedule
09.03.2015