Код: Выделить всё
// sender
dataConnection.send({
'file': file
});
// receiver
dataConnection.on('data', function(fileData) {
var dataView = new Uint8Array(fileData);
var dataBlob = new Blob([dataView]);
var url = window.URL.createObjectURL(dataBlob);
// create
var link = document.createElement('a');
link.href = url;
link.download = fileName;
document.body.appendChild(link);
// trigger the download file dialog
link.click();
}
< /code>
Этот подход, однако, не подтверждает получение кусков файла и записывает каждый кусок, как он приходит ... он должен ждать, пока весь файл будет прочитан со стороны отправителя и отправлено в приемник.// sender
for (var i = 0; i < fileSize; i += chunkSize) {
var fileReader = new FileReader();
// read next chunk
var blob = file.slice(start, end);
...
fileReader.onload = function(e) {
...
dataConnection.send({ 'blob': blob });
}
fileReader.readAsArrayBuffer(blob);
}
< /code>
Таким образом, я читаю кусок файла по чанку и отправляю каждый кусок в приемник, когда я его читаю. Теперь, единственный способ, которым я знаю, как на самом деле сохранить файл, который отправляется таким образом,-это делать то, что описано в этом сообщении в блоге:
http://bloggeek.me/send-file-webrtc-data-api>
... Описанный в . Тем не менее, этот подход принимает все куски по мере их появления, хранит их в памяти, затем создает большой Uint8Array Подробнее здесь: https://stackoverflow.com/questions/237 ... k-by-chunk