Javascript 如何在小型nodejs聊天应用程序中向其他人发送文件

Javascript 如何在小型nodejs聊天应用程序中向其他人发送文件,javascript,node.js,sockets,chat,Javascript,Node.js,Sockets,Chat,我已经用nodejs制作了一个小的聊天应用程序,现在我正试图让它成为可能,如果两个人在聊天,他们也可以互相发送小文件 我刚刚开始学习node,所以对我来说有点困惑。我正在努力使这项工作,但我甚至不知道我该怎么做 因此,欢迎任何帮助:) btw var file是输入类型=file的文件 这是我的密码: index.js var express = require("express"); var app = express(); var fs = require("fs")

我已经用nodejs制作了一个小的聊天应用程序,现在我正试图让它成为可能,如果两个人在聊天,他们也可以互相发送小文件

我刚刚开始学习node,所以对我来说有点困惑。我正在努力使这项工作,但我甚至不知道我该怎么做

因此,欢迎任何帮助:)

btw var file是输入类型=file的文件

这是我的密码:

index.js

    var express = require("express");
    var app = express();
    var fs = require("fs");
    var port = 8888;


        // fs.readFile(sendFile, function (err, data) {
        //   if (err) {
        //           return console.error(err);
        //   }
        //   console.log("Asynchronous read: " + data.toString());
        // });

    app.set('views', __dirname + '/tpl');
    app.set('view engine', "jade");
    app.engine('jade', require('jade').__express);
    app.use(express.static(__dirname + '/public'));

    app.get("/", function(req, res){
        res.render("page");
    });

    var io = require('socket.io').listen(app.listen(port));

    io.sockets.on('connection', function (socket) {
        socket.emit('message', { message: 'Welcome to the chat :)' });
        socket.on('send', function (data) {
            io.sockets.emit('message', data);
        });
    });

    io.sockets.on('sendFile', function(data){
        socket.emit('getFile',data)
    });
chat.js

        window.onload = function() {

            var messages = [];
            var socket = io.connect('http://'+location.host);
            var field = document.getElementById("field");
            var sendButton = document.getElementById("send");
            var content = document.getElementById("content");
            var name = document.getElementById("name");
            var file = document.getElementById("file").files;


        // file.onchange = function(e) {
        //  var file = document.getElementById("file").files;
        //  console.log(file);
        // }

            socket.on('message', function (data) {
                if(data.message) {
                    messages.push(data);
                    var html = '';
                    for(var i=0; i<messages.length; i++) {
                        html += '<b>' + (messages[i].username ? messages[i].username : 'Server') + ': </b>';
                        html += messages[i].message + '<br />';
                    }
                    content.innerHTML = html;
                } else {
                    console.log("There is a problem:", data);
                }
            });

            socket.on('getFile', function (data) {
                console.log(data);
            });


            sendButton.onclick = sendMessage = function() {
                if(name.value == "") {
                    alert("Please type your name!");
                } else {
                    socket.emit('sendFile', file);
                    var text = field.value;
                    socket.emit('send', { message: text, username: name.value });
                    field.value = "";
                }
            };

            field.addEventListener("keyup", function(e){
                if(e.keyCode == 13) {
                    sendMessage();
                }
        });
        }
window.onload=function(){
var消息=[];
var socket=io.connect('http://'+location.host);
变量字段=document.getElementById(“字段”);
var sendButton=document.getElementById(“发送”);
var content=document.getElementById(“内容”);
var name=document.getElementById(“名称”);
var file=document.getElementById(“文件”).files;
//file.onchange=函数(e){
//var file=document.getElementById(“文件”).files;
//console.log(文件);
// }
socket.on('message',函数(数据){
if(data.message){
消息推送(数据);
var html='';

对于(var i=0;i可能这不是使用代码的答案,但您可以使用


通过Socket.IO对Node.js进行双向文件传输,请参见

上的代码这可能不是使用您的代码的答案,但您可以使用

通过Socket.IO为Node.js进行双向文件传输,请参阅上的代码