Я работаю с пользовательским API, чтобы позволить пользователю загружать файл (, надеюсь, произвольный размер). Если файл большой, он будет обмениваться файлами и обрабатываться несколькими запросами на сервере.
Я пишу код, который использует File
и FileReader
(HTML5) в соответствии со многими примерами из онлайн. В общем (из того, что я читал в Интернете) для передачи файла с файлом, люди сначала получат blob данных из своего файлового объекта
var file = $('input[type=file]')[0].files[0];
var blob = file.slice(start,end)
Затем используйте FileReader
, чтобы прочитать blob readAsArrayBuffer(blob)
или readAsBinaryString(blob)
И, наконец, в методе FileReader.onload(e)
отправьте данные на сервер. Повторите этот процесс для всех фрагментов файла.
Мои вопросы
Зачем мне нужно использовать FileReader
? Если я не использую его и просто отправлю капли с помощью File.slice
, есть ли какая-либо гарантия, что операция разреза будет выполнена до того, как я попытаюсь отправить данные в каждом запросе. Объект File
загружает весь файл при его создании (конечно же?). Обращается ли File.slice
к позиции, заданной параметрами, а затем считывает информацию в? Документация не дает мне подсказки о том, как она реализована.