2014-01-03 2 views
2

У меня есть действующий код, который загружает файлы от пользователя в Azure BLOB-хранилище любого размера. Проблема в том, что если файлы больше определенного размера, я перебираю загруженные файлы (я также поддерживаю продолжение загрузки).Эффективная загрузка куска с помощью Javascript/AJAX?

При загрузке куска, filereader работает очень медленно. Я не уверен, как это исправить - я полагаю, что с веб-мастерами? Будет ли это связано с Parallel.js?

Другой недостаток заключается в том, что мне требуется возможность загрузки на IE9 в конце концов - хотя в настоящее время он работает только с HTML5, потому что я использую Filereader. Как я должен делать это без веб-работников, если бы это не было сокрушительно медленно? (У меня есть 50 Мбит/с, загрузка и получение 5 Мбит/с).

EDIT: Спасибо, ребята, это так. Вместо того, чтобы читать в файле, я просто:

var requestData = o['files'][0].slice(o.uploadedBytes, o.uploadedBytes + o.maxChunkSize); 
o.data = requestData; 
o.dataType = requestData.type; 
o.type = "PUT"; 
o.beforeSend = function(xhr) { 
    xhr.setRequestHeader('x-ms-blob-type', 'BlockBlob');  
}; 

И это работает как шарм!

+0

Почему вы используете FileReader? –

+0

Можете ли вы поделиться некоторым кодом? Мы также используем FileReader в нашем продукте, и, похоже, он работает нормально. Мы не используем веб-работников. Мы разделяем файл в блоках размером 256 КБ. @RayNicholus - FileReader позволяет вам читать часть файла, чтобы вы могли загружать действительно большие файлы, разбивая их на куски и загружая эти куски. –

+2

@GauravMantri Это не то, для чего используется FileReader. Чтение файла в памяти просто для разделения его на части невероятно неэффективно и не нужно. Вместо этого вы должны использовать метод 'slice' на соответствующем' Blob'. –

ответ

3

В современных браузерах вы можете .slice файла. Эта операция очень быстро и решает вашу проблему с производительностью.

Старые браузеры не поддерживают это. Это зависит от вас, чтобы найти обходной путь, который работает, возможно, Flash-загрузчик? Или просто ограничьте размер файла в IE9.

+0

Обратите внимание, что вы не можете применять ограничения размера файла в IE9 или старше из-за отсутствия поддержки API файлов. –

Смежные вопросы