41

I have a socket.io client to whom socket.io server is listening in node.js. I want to upload a file to server by socket.io. because my socket.io client is under apache. and socket.io server is in Node.js. I want to code uploading of file in Node.js. But how I can send the file data to the node.js listening to socket.

I have tried the upload of a file using Node.js server. This link is here but the this code does not use the socket.io with this. But my original project is using the socket.io.

Uploading a file in node.js by formidable

How can I do this with the socket.io server?

hong4rc
  • 3,999
  • 4
  • 21
  • 40
XMen
  • 29,384
  • 41
  • 99
  • 151

5 Answers5

28

The checked answer is invalid as of Jul 3rd 2012.

Read by yourself this tutorial on NetTuts. This tutorial uses node.js and socket.io to upload a file.

Athari
  • 33,702
  • 16
  • 105
  • 146
Olivier Refalo
  • 50,287
  • 22
  • 91
  • 122
13

I wrote a module for this purpose.

socket.io-stream

nkzawa
  • 211
  • 2
  • 3
12

Here is a npm module I wrote that will implement Socket.IO file uploading in your application:

Socket.IO File Upload

All you need to give the module is your middleware, your socket, and the file input or drop zone used for uploading files. It will also save the files if you give it a directory. The module takes care of the rest.

sffc
  • 6,186
  • 3
  • 44
  • 68
6

In May of 2014 with release version 1.0 of socket.IO, binary support has been added to the library.

Socket.IO now supports emitting Buffer (from Node.JS), Blob, ArrayBuffer and even File, as part of any datastructure

It's all due to low level api which is provided by engine.io.

Rsh
  • 7,214
  • 5
  • 36
  • 45
5

Here is an example of sending a file over socket.io: http://liamkaufman.com/blog/2012/02/11/12-pushing-files-to-the-browser-using-deliveryjs-socketio-and-nodejs/

studgeek
  • 14,272
  • 6
  • 84
  • 96
  • The OP wants to send a file to the server, not to the client as in this example. – Prestaul Sep 07 '12 at 22:38
  • 1
    The library from that example ([Delivery.js](https://github.com/liamks/Delivery.js)) claims support for bidirectional file transfers. – Rob W May 25 '14 at 15:11