как отправить файл с помощью socket.io на сервер flask - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть одностраничное приложение, работающее на сервере flask. в настоящее время он работает для отправки сообщений между пользователями по каналам. В качестве примера я отправляю сообщение вроде этого:

 document.querySelector('#chat_msgs_form').onsubmit = () => {

        var elem = document.getElementById("username_head");
        const username = elem.innerHTML;
        elem = document.getElementById('chat_msg_head');
        var cnl = elem.innerHTML.split('#');
        const channel = cnl[1];
        elem = document.querySelector('#chat_msg_body');
        const message = elem.value;


        socket.emit('message', {'username': username, "channel": channel, "message": message});



        return false;
      }

на стороне html, у меня есть форма для отправки сообщений и файлов:

<form id="chat_msgs_form" class="bg-light">
   <div class="row input-group">
      <input id="chat_msg_body" type="text" placeholder="Type a message" class="form-control rounded-0 border-0 py-4 bg-light">
      <div class="col-4">
      <h3 class="tm-blue-text tm-section-title" id="chat_msg_head">#general</h3>
   </div>
   <div class="col-3">
       <input type="file" id="file" name="file"></input>
   </div>
    <div class="col-2">
      <button type="submit" class="btn btn-primary">Write</button>
    </div>
  </div>
</form>

И на стороне сервера , Я получаю сообщение вроде этого:

@socketio.on("message")
def chat(data):
    mfrom = data["username"]
    channel = data["channel"]
    message = data["message"]
    # save upto 100 messages for each channel created.
    if (len(mychats[channel]) < 100):
        mychats[channel].append((mfrom,message))
    else:
        mychats[channel] = [(mfrom,message)] + mychats[channel]
        del mychats[channel][-1]

    emit("msg_cast", {"username": mfrom, "channel": channel, "message": message}, broadcast=True)

вопрос в том, как добавить к клиентскому коду javascript код загрузки файла, прикрепленного через сокет, к остальной части сообщения и как сервер должен сделать, чтобы справиться с этим?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...