使用NodeJS和node-formidable上传文件

12

我成功使用Node.js和formidable模块上传文件,但保存在磁盘上的文件格式有问题(编码错误)。 例如,如果我上传图像,则无法查看它;如果我上传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个回答

20
问题在于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; });

什么是fs。我没有看到它在哪里被定义。 - ÄR Âmmãř Żąîñh

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接