При отправке файла через AJAX он сначала записывается в память? - PullRequest
0 голосов
/ 21 января 2011

Я пишу загрузчик, который должен иметь возможность передавать файлы любого размера (до 30 гигабайт) на сервер.

Первоначально я хотел написать Java-апплет, который разбил бы файлна куски, отправьте их на сервер, а затем соберите их там.

Однако кто-то предположил, что XMLHttpRequest AJAX может выполнять эту работу в сочетании с nsIFileInputStream (пример здесь: https://developer.mozilla.org/en/using_xmlhttprequest#Sending_files_using_a_FormData_object) ииспользуя PUT вместо POST.

Я беспокоюсь о двух вещах и, похоже, не могу найти ответ.

1) Будет ли AJAX пытаться прочитать файл в память перед отправкой (это, очевидно, сломало бы все это)

[EDIT] Этот http://www.codeproject.com/KB/ajax/AJAXFileUpload.aspx?msg=2329446 пример явно заявляет, что они используют ActiveXObject, потому что это НЕ загружает файл в память ... что мне подсказываетэтот XMLHttpRequest загрузит его в память.Я удивлен, что мне так трудно найти эту информацию, если честно.

2) Насколько надежен этот подход.Я понимаю, что, если соединение просто умирает, загрузка должна была бы возобновиться с нуля, но реально, насколько вероятно, что при использовании стандартного кабельного соединения с дросселем загрузки около .5 МБ / с, что файл 30 ГБ прибудет на сервер

1 Ответ

1 голос
/ 22 января 2011

Я пытаюсь сделать что-то подобное, используя File Api и blob.slice, но оказалось, что это увеличивает время работы с большими файлами. Однако вы можете использовать Google Gears, который намного лучше работает с большими нарезанными файлами. Это также не вызывает ошибок с порядком срезов, что FileReader в сочетании с XHR делает часто и случайно.

Однако я нахожу (как правило), что загрузка файлов через JavaScript очень нестабильна ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...