|
var drop = require('drag-and-drop-files') |
|
var fileReaderStream = require('filereader-stream') |
|
var through = require('through2') |
|
var leveljs = require('level-js') |
|
var pump = require('pump') |
|
var db = leveljs('bigdata') |
|
|
|
db.open(function onOpen() { |
|
drop(document.body, function(files) { |
|
var first = files[0] |
|
var idx = 0 |
|
var writes = [] |
|
var start = Date.now() |
|
var saver = through(function (ch, enc, next) { |
|
console.log('on chunk', ch.length) |
|
db.put('chunk-' + idx++, ch, function (err) { |
|
writes.push({time: Date.now() - start, size: ch.length}) |
|
if (err) return saver.destroy(err) |
|
next() |
|
}) |
|
}) |
|
pump(fileReaderStream(first, {chunkSize: 8096}), saver, function (err) { |
|
if (err) console.error(err) |
|
var totalLen = 0 |
|
var totalTime = writes[writes.length - 1].time |
|
writes.forEach(function (w) { |
|
totalLen += w.size |
|
}) |
|
console.log(totalLen / (totalTime / 1000)) |
|
}) |
|
}) |
|
}) |