Загрузите файл с помощью NodeJS и node -formidable
Мне удалось загрузить файл с помощью node.js и грозного модуля,
файл, который был сохранен на диске, в каком-то плохом формате (плохая кодировка)
например если я загружу изображение, я не могу его просмотреть, если я загружу txt файл gedit, поставьте следующее сообщение:
"gedit не смог обнаружить кодировку символов.
Убедитесь, что вы не пытаетесь открыть двоичный файл.
Выберите кодировку символов из меню и повторите попытку. "
вот код:
form.encoding = 'utf-8';
form.parse(req, function(err, fields, files) {
fs.writeFile('test.js', files.upload,'utf8', function (err) {
if (err) throw err;
console.log('It\ saved!');
});
});
Ответы
Ответ 1
Проблема заключается в том, что files.upload не является содержимым файла, это экземпляр класса File из node -formidable.
Посмотрите:
https://github.com/felixge/node-formidable/blob/master/lib/file.js
Вместо того, чтобы снова писать файл на диск, вы можете просто получить доступ к пути к загруженному файлу, как это, и использовать fs.rename(), чтобы переместить его туда, где вы хотите:
fs.rename(files.upload.path, 'yournewfilename', function (err) { throw err; });
Ответ 2
Является ли форма установлена на enctype = "multipart/form-data"?
Я использовал только грозный метод Express - пример Express отлично работает:
https://github.com/visionmedia/express/tree/master/examples/multipart