Обработка файлов с помощью JavaScript и Google Gears, есть ли лучшее решение? - PullRequest
6 голосов
/ 19 февраля 2010

Итак - я немного использовал этот метод загрузки файлов, но похоже, что Google Gears плохо поддерживает новые браузеры, которые реализуют спецификации HTML5.Я слышал, как слово устарело , распространяющееся по нескольким каналам, поэтому я ищу замену, которая может выполнять следующие задачи и поддерживать новые браузеры.Я всегда могу прибегнуть к POST-файлам для шестерен / стандартных файлов, но следующие пункты значительно упрощают мой процесс:

  1. Пользователи ДОЛЖНЫ , чтобы иметь возможность выбрать несколько файлов для загрузки в диалоговом окне.
  2. Я ДОЛЖЕН быть в состоянии получать обновления статуса при передаче файла.(индикаторы выполнения)
  3. Я хотел бы иметь возможность использовать PUT запросов вместо POST
  4. Я хотел бы иметь возможность легко прикреплять эти события к существующим элементам HTML с помощью JavaScript,То есть выбор файла должен запускаться при нажатии <button>.
  5. Я хотел бы иметь возможность легко контролировать параметры ответа / запроса с помощью JavaScript.

Я не уверенесли в новых браузерах HTML5 есть поддержка для шестеренок рабочего стола / объектов запросов, или если во флэш-загрузчике есть эти функции, которых мне не хватает в моих поисках в Google.

Пример загрузки кода с использованием шестеренок:

// select some files:
var desktop = google.gears.factory.create('beta.desktop');
desktop.openFiles(selectFilesCallback);

function selectFilesCallback(files) {
  $.each(files,function(k,file) {
    // this code actually goes through a queue, and creates some status bars
    // but it is unimportant to show here...
    sendFile(file);
  });
}

function sendFile(file) {
  google.gears.factory.create('beta.httprequest');
  request.open('PUT', upl.url);
  request.setRequestHeader('filename', file.name);
  request.upload.onprogress = function(e) {
    // gives me % status updates...  allows e.loaded/e.total
  };
  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      // completed the upload!
    }
  };
  request.send(file.blob);
  return request;
}

Редактировать: очевидно, flash не может использовать PUT-запросы, поэтому я изменил его на «like» вместо «must».

Ответы [ 2 ]

1 голос
/ 09 июня 2010

(Появился из комментария к исходному вопросу, согласно предложению спрашивающих.)

Plupload - один из самых новых детей в блоке, и он использует лучший доступный метод (HTML 5, Flash, Gears, Silverlight): http://plupload.com/

1 голос
/ 22 февраля 2010

Я ранее использовал флэш-карты, такие как http://www.webresourcesdepot.com/open-source-flash-uploader-multi-bit-shift/. Они работают нормально, и на большинстве компьютеров должны работать только в зависимости от флэш-памяти. Я не нашел надежного способа сделать это только с помощью js, но флэш можно контролировать с помощью js, особенно если вы пишете свой собственный.

надеюсь, это поможет.

...