使用NodeJS和节点强大的上传文件

我成功上传使用node.js和强大的模块的文件,但获得保存在磁盘上的文件是在某种不好的格式(坏的编码),例如,如果我上传图像,我不能查看它,如果我上传一个txt文件gedit提供了下面的msg:“gedit还没有检测到字符编码,请检查你是不是想打开一个二进制文件,从菜单中select一个字符编码再试一次。

这里是代码:

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!'); }); }); 

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

看着:

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

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

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

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

我只用了Express – 强大的例子工作正常:

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