Вручную вызвать «диалог открытия файла», используя plupload - PullRequest
14 голосов
/ 03 марта 2011

Я использую plupload для масштабирования изображений клиента перед их загрузкой. Мне нравится функция, которая изящно возвращается к html4, если у пользователя не установлены движки flash, silverlight и т. Д.

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

Хорошо, поэтому HTML4 (или, скорее, браузер, кроме chrome: P) не позволит мне сделать это, если пользователь не нажмет кнопку обзора (или наложение, покрывающее кнопку обзора), поэтому, когда я получаю Возврат к HTML4. Я признаю, что не могу этого сделать, но у большинства пользователей установлены флэш или silverlight, и у них нет этого ограничения. Поэтому мой вопрос таков:

Как мне запустить диалоговое окно открытия файла в plupload (помните, что для этого мне нужны только флэш-память и Silverlight-движки).

Ответы [ 5 ]

15 голосов
/ 18 февраля 2015

Прежние решения не работали на iPhone с plupload 2.1.2.

Следующий код добился цели (необходим jquery):

$("#id_of_the_second_button").click(function() { 
    $('div.moxie-shim input[type=file]').trigger('click');
});
6 голосов
/ 14 октября 2013

Время отката станет неактуальным с течением времени.Это означает, что рано или поздно мы все будем использовать среду выполнения HTML5.Если вы используете среду выполнения HTML5, но не используете pluploadQueue(), это также будет работать:

// Set up and initialise uploader
var uploader = new plupload.Uploader({
  'runtimes' : 'html5',
  'browse_button' : 'id_of_the_first_button'

  // Other options
});

uploader.init();

// Hook in the second button
plupload.addEvent(document.getElementById('id_of_the_second_button'), 'click', function(e) {
  var input = document.getElementById(uploader.id + '_html5');
  if (input && !input.disabled) {
    input.click();
  } // if
  e.preventDefault();
});
5 голосов
/ 19 декабря 2012

Если кто-то ищет решение HTML5, вот оно:

var up= $('#uploader').pluploadQueue();
if (up.features.triggerDialog) {
    plupload.addEvent(document.getElementById('idOtherButton'), 'click', function(e) {
        var input = document.getElementById(up.id + '_html5');
        if (input && !input.disabled) { // for some reason FF (up to 8.0.1 so far) lets to click disabled input[type=file]
            input.click();
        }
        e.preventDefault();
    }); 
}
2 голосов
/ 11 апреля 2011

Хорошо. Это кажется невозможным, поэтому если кто-то не реализует дескрипторы событий для компонентов silverlight и flash, мне не повезло

1 голос
/ 13 марта 2011

Я прочитал вашу проблему.

Я нашел несколько статей, которые могут помочь в этом разобраться.Проверь их.Это может помочь ...!

01./153993/v-javascript-mozhno-li-programmno-vyzvat-sobytie-click-dlya-elementa-vvoda-faila

02./1843333/dialogovoe-okno-otkrytiya-faila-v-javascript

...