Я использую Webrtc для отправки файла подключенному однорангу, и я отправляю файл кусочками. Тем не менее, у меня возникают проблемы с выяснением, как заставить сверстника сохранить /загрузить файл во время потоковой передачи, Chunk by Chunk.
// 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
в памяти, а затем позволяет получателю загружать файл. Это действительно тяжело для памяти и реально ограничено, возможно, на пару сотен МБ, поэтому он не масштабируется.>
Я использую Webrtc для отправки файла подключенному однорангу, и я отправляю файл кусочками. Тем не менее, у меня возникают проблемы с выяснением, как заставить сверстника сохранить /загрузить файл во время потоковой передачи, Chunk by Chunk.[code]// sender dataConnection.send({ 'file': file });
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) {
Таким образом, я читаю кусок файла по чанку и отправляю каждый кусок в приемник, когда я его читаю. Теперь, единственный способ, которым я знаю, как на самом деле сохранить файл, который отправляется таким образом,-это делать то, что описано в этом сообщении в блоге:
http://bloggeek.me/send-file-webrtc-data-api> ... Описанный в . Тем не менее, этот подход принимает все куски по мере их появления, хранит их в памяти, затем создает большой Uint8Array [/code] в памяти, а затем позволяет получателю загружать файл. Это действительно тяжело для памяти и реально ограничено, возможно, на пару сотен МБ, поэтому он не масштабируется.>