我使用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!');
});
});
答案 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