Node.js 通过socket.io发送时,将文件放入特定目录

Node.js 通过socket.io发送时,将文件放入特定目录,node.js,socket.io,Node.js,Socket.io,我有一个文件(.png文件是特定的),我正试图把它放到一个特定的目录中 从中可以看出,以下代码可用于发送文件: socket.emit('uploadFile', { file: myFile}); 现在,在node.js中,我尝试以下操作: .on('uploadFile', co.wrap(function* (data) { var fs = require('fs'); fs.writeFile(__dirname + '/public/avatar/myFile.pn

我有一个
文件
(.png文件是特定的),我正试图把它放到一个特定的目录中

从中可以看出,以下代码可用于发送文件:

socket.emit('uploadFile', { file: myFile});
现在,在node.js中,我尝试以下操作:

.on('uploadFile', co.wrap(function* (data) {
    var fs = require('fs');
    fs.writeFile(__dirname + '/public/avatar/myFile.png', data.file, {
        flag: "w"
    }, function (err) {
        if (err) {
            return console.log(err);
        }
        console.log("The file was saved!");
    });
}))
这将创建一个文件,但是该文件不可读。我猜我在node.js上保存的文件是错误的。由于它已经是一个文件,我想我正在尝试将该文件写入一个新文件


如何将
data.file
获取到位置
/public/avatar/myFile.png

您所说的“这创建了一个文件,但该文件不可读”是什么意思?文件是否已创建?“不可读”是什么意思?没有权限?内容不正确?你有错误吗?文件在您写入之前是否存在?您是否检查了
data.file
是否确实包含您期望的内容?如果文件已创建,但不在正确的位置,则在何处创建?要在其中创建文件的目录是否已存在?如果你想让别人帮助你,你需要更明确一点。@jcaron创建了一个文件“myFile.png”。但当在图像查看器中打开它时,它不是图像,只是空白。该文件是在正确的目录中创建的。如果您阅读了我链接的文档,它应该是正确的,实际的
文件
。有些人必须读更多的东西。那么,在你写之前,这个文件存在吗?您的node.js脚本是否具有写入权限?
data.file
是否实际包含您期望的内容?这个文件实际上包含什么?它有多大尺寸?@jcaron没有!因此,“w”标志(如果不存在,则应创建它)。Afaiak它应该覆盖文件的旧内容。我刚刚读了
fs.writeFile
规范,显然需要将
文件
转换为
缓冲区
。我对该文件的内容表示歉意,它是一个
.png文件