使用NodeJS和node-formidable上传文件

时间:2011-04-03 15:46:02

标签: javascript file-upload node.js serverside-javascript

我使用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\'s saved!');
    });
});

2 个答案:

答案 0 :(得分:19)

问题是files.upload不是文件的内容,它是来自node-formidable的File类的实例。

看看:

https://github.com/felixge/node-formidable/blob/master/lib/file.js

您可以像这样访问上传文件的路径,而不是尝试再次将文件写入磁盘,并使用fs.rename()将其移动到您想要的位置:

fs.rename(files.upload.path, 'yournewfilename', function (err) { throw err; });

答案 1 :(得分:4)

表单是否设置为enctype =“multipart / form-data”?

我只使用了强大的Express - Express示例正常工作:

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