Slide 13
Slide 13 text
File Upload Example
upload.onclick = function() {
socketio.emit('start-transfer',
filename, size, transfer_cb);
}
transfer_cb = function(filename) {
if (!filename)
abort_transfer();
for (var i = 0; i < num_chunks; i++) {
chunk = read_next_chunk();
socketio.emit('write-chunk',
filename, offset, chunk, chunk_cb);
update_progress(offset + chunk.length);
}
}
chunk_cb = function(ack) {
if (!ack)
abort_transfer();
}
@socketio.on('start-transfer')
def start_transfer(filename, size):
_, ext = os.path.splitext(filename)
if ext in ['.exe', '.bin', '.sh']:
return False # reject the upload
id = uuid.uuid4().hex
create_file(id + ext, filename, size)
return id + ext
@socketio.on('write-chunk')
def write_chunk(filename, offset, data):
return write(filename, offset, data)
← Client (JavaScript) Server (Python) →