2011-04-03 65 views
10

我成功上傳了使用node.js和強大模塊的文件, 在磁盤上保存的文件是某種不好的格式(壞編碼) 如果我上傳圖片,我無法查看它,如果我上傳了一個txt文件gedit,請提供以下消息: 「gedit未能檢測到字符編碼。 請檢查您是否嘗試打開二進制文件。 從菜單中選擇一個字符編碼,然後重試。「使用NodeJS和節點強大的上傳文件

這裏是代碼:

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

回答

18

的問題是在於files.upload不是文件的內容,它的一個實例來自node-strongidable的文件類。

看:

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

,而不是試圖再次寫入到磁盤文件,你可以訪問的路徑,上傳的文件這樣,用fs.rename()將其移動,你想要:

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