2011-01-21 2 views
0

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

Мое первоначальное намерение состояло в том, чтобы написать апплет 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, потому что Безразлично» T загружает файл в память ..., который подсказывает мне, что XMLHttpRequest загрузит его в память. Я удивлен, что мне сложно найти эту информацию, если честно.

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

ответ

1

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

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

+0

да, тем больше я изучаю это, тем больше я склонен думать, что это не реальный подход. –

+0

Скорее всего, однажды. Другие варианты использования Flash, Silverlight или BrowserPlus. Кажется, что Gears отказались в пользу HTML5, однако он по-прежнему поддерживается, пока все браузеры не внедрили его правильно. – Fabdrol

+0

О, и у BrowserPlus есть некоторые действительно приятные варианты, такие как gzipping файл перед его загрузкой. Должно сильно сократить время загрузки. Тем не менее, я бы не рекомендовал BP для одиночных небольших файлов, на мой взгляд, это немного перебор. Отличным вариантом является PLupload, который выбирает плагин, который пользователь установил. – Fabdrol

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