Загрузить файл, используя NodeJS и node-formidable - PullRequest
11 голосов
/ 03 апреля 2011

Я успешно загружаю файл, используя node.js и грозный модуль, но файл, который был сохранен на диске, находится в каком-то плохом формате (плохое кодирование), например, если я загружаю изображение, я не могу его просмотретьесли я загружаю текстовый файл, 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\'s saved!');
    });
});

Ответы [ 2 ]

19 голосов
/ 16 июня 2011

Проблема в том, что 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; });
4 голосов
/ 05 апреля 2011

Форма имеет значение enctype = "multipart / form-data"?

Я использовал только грозные с Express - пример Express работает отлично:

https://github.com/visionmedia/express/tree/master/examples/multipart

...