Мне нужно отправить файл из одного клиентского браузера в другой, не сохраняя его на сервере (узел .js) Как я могу это сделать с помощью HTML5 и API файлов?Как отправить один файл из одного браузера клиента в другой, не сохраняя его на сервере (node.js) с помощью html5 и API файлов
На самом деле решение, реализованное:
Final solutionlooks так:
На посеве клиента получить файл из ввода [тип = файл]
массив Файл содержит ключ хранения файла объекта , Используйте метод slice/mozSlice для разделения его кусков, чтобы Object.slice вернул объект Blob.
Использование FileReader Blob можно считывать в необработанные двоичные данные или кодированные в base64 данные. FileReader реализует readAsDataURL (blob) для чтения в base64 и readAsBinaryString (blob) для чтения исходных двоичных данных. Смотрите «onloadend» событие FileReader, чтобы получить доступ к данным, считываемым из blob.
Вы должны реализовать логику, чтобы вычислить количество порций в зависимости от размера порции (обычно 1024 * 64) и начала следующего среза/стоп позиции, чтобы получить куски точно такого же размера
закодированные данные передаются через Socket.io на node.js, где единственной логикой на стороне сервера является отправка принятых данных на грушу, также подключенных через socket.io
Угадайте, что самое интересное - собрать все эти куски в blob на браузере клиента груши. Создание Blob из необработанных двоичных данных приведет к неправильному размеру блоба и приведет к неправильному размеру файла. Вот почему мы передаем кодированные данные base64 из сеялки.
Расшифровка может стать проблемой, поскольку мы должны реализовать ее сами.function decode64 (data) { var mimeString = data.split(',')[0].split(':')[1].split(';')[0], // remove all chars before ',' byteString = atob(data.split(',')[1]), // if BlobBuilder available ab = new ArrayBuffer(byteString.length), ia = new Uint8Array(ab); for (var i = 0; i < byteString.length; i++) { ia[i] = byteString.charCodeAt(i); } blob = new Blob([ia], {'type' : (mimeString) }); return blob; }
После декодированные данные BLOb мы должны толкать его в массив, содержащий aother декодируется куски. 7. Создать Blob из массива кусков раскодируются в сгустки, как этот-л
new Blob (array_of_decoded_blobs_returned_by_decode64_function, {type:'mime-type'})
Использование файла апи записи блоб в файл или делать то, что вы хотите сделать
Только что нашел это, вы можете прочитать его. http://googleblog.blogspot.sg/2013/02/race-to-win-on-big-and-small-screens.html –
Это супер вопрос с решением! Я искал долго и упорно что-то вроде этого. Удалось ли вам перенести его равноправным путем без какого-либо реле? Интересно, есть ли вероятность получить копию кода, который вы написали? (Если он не чувствителен?) Это будет огромная помощь –
, а также в 5 вы по-прежнему отправляете данные на сервер, вместо этого напрямую к другому партнеру, потребляющему (потенциально тонну) полосе пропускания. Как вы обошли это? спасибо –