使用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