Обнаружение функции загрузки файла HTML5 в браузере - PullRequest
7 голосов
/ 17 января 2011

Я пытаюсь загрузить файлы, используя функции HTML5. По результатам расследования я обнаружил, что есть 3 разных способа загрузки файлов:

  1. Путем кодирования файла как составного: это делается, когда есть поддержка только для чтения файлов.
  2. Отправка двоичных данных с использованием метода спецификации XMLHTTP2 (AJAX): Новый метод send (Blob / File) может отправлять двоичные данные по проводам.
  3. Объект FormData: использование XMLHTTP (AJAX) метода отправки (FormData) .

Теперь для кросс-браузерных проблем и определения функций фрагмент, как показано ниже, прост:

if(typeof FileReader == "undefined")

Однако я не уверен, как узнать, поддерживает ли метод send () AJAX в текущем браузере реализацию метода send(FormData) или send(Blob/File). Как это найти? Есть ли здесь уловка Object.property? Или что-то другое?

Спасибо

1 Ответ

2 голосов
/ 19 января 2011

Для обработки двоичных данных вы захотите использовать WebSockets.Это часть новой HTML5 спецификации .Однако есть проблема.По состоянию на середину декабря 2010 года WebSockets были отключены во всех основных браузерах из-за уязвимости, приводящей к отравлению кэша.

Последнее, что я слышал, это все еще разобрано .

Чтобы загрузить файл перед отправкой через WebSockets, вы должны использовать FileReader API , который поддерживается в последней версии каждого браузера (насколько мне известно).

Чтобы проверить,FileReader поддерживается, вы должны проверить как:

if (FileReader){
  // It's supported
}

Вы также можете проверить:

if (window.URL){
  //
}

для альтернативы.

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