使用Websockets和Nodejs上载文件

use*_*953 12 html javascript file-upload websocket node.js

我正在尝试实现一个文件上传器,其中一个HTML输入文件由WebSocket发送到Nodejs服务器.

试图从HTML的FileReader API读取BLOB和二进制字符串中的文件,并将其发送到Nodejs服务器,以便将其写入服务器中的文件.在Nodejs部分中尝试使用ascii或base 64编码的createWriteStream和writeFile.

保存在服务器中的文件仍然无法正常工作.

我错过了什么吗?

谢谢

UPDATE

客户

    var uploader = $("#uploader"),
        files = uploader.prop('files'),
        file_reader = new FileReader();
    file_reader.onload = function(evt) {
        socketClient.write({
            'action': 'ExtensionSettings->upload', 
            'domain': structureUser.domain, 
            'v_id': ext, 
            'file': file_reader.result
        });
    };
    file_reader.readAsDataURL(files[0]);
    //readAsDataURL
    uploader.replaceWith(uploader.clone());
Run Code Online (Sandbox Code Playgroud)

服务器

var stream = fs.createWriteStream("file");
stream.once("open", function() {
    stream.write(msg.file, "base64");
    stream.on('finish', function() {
        stream.close();
    });
});
Run Code Online (Sandbox Code Playgroud)

Jab*_*her 2

.readAsDataURL() 返回格式为 data:MIMEtype;base64,.... 的字符串,您应该删除逗号之前的部分,因为它不是 base64 编码文件的一部分,它是服务数据