我继续使用node.js和强大的模块上传文件,
在磁盘上保存的文件是某种格式不正确(错误编码)
例如如果我上传的图像我无法查看,如果我上传一个txt文件gedit提供以下msg:
“gedit无法检测到字符编码.
请检查您是否未尝试打开二进制文件.
从菜单中选择字符编码,然后重试.
在磁盘上保存的文件是某种格式不正确(错误编码)
例如如果我上传的图像我无法查看,如果我上传一个txt文件gedit提供以下msg:
“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!'); }); });
解决方法
@H_502_14@ 问题是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; });