15

在上传图片之前,我正在使用 plupload 对图片进行客户端缩放。如果用户没有安装 flash、silverlight 等引擎,我喜欢它优雅地回退到 html4 的功能。

我希望能够在用户单击页面上的某些元素并且我想处理事件(有时阻止文件对话框打开)时开始上传。事实上,我想使用 javascript 打开文件对话框。

好的,所以 HTML4(或者更确切地说是浏览器,除了 chrome :P)不会让我这样做,除非用户单击浏览按钮(或覆盖浏览按钮的叠加层),所以当我得到 HTML4 的回退时我会接受我不能这样做,但大多数用户都会安装闪光灯或 Silverlight,他们没有这个限制。所以我的问题是:

我如何在 plupload 中触发文件打开对话框(请记住,我只需要 flash 和 silverlight 引擎来执行此操作)。

4

6 回答 6

14

以前的解决方案不适用于 plupload 2.1.2 的 iPhone。

以下代码起到了作用(需要jquery):

$("#id_of_the_second_button").click(function() { 
    $('div.moxie-shim input[type=file]').trigger('click');
});
于 2015-02-18T20:01:02.427 回答
6

随着时间的推移,后备运行时将变得无关紧要。这意味着迟早我们都会使用 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();
});
于 2013-10-14T14:29:43.763 回答
5

如果有人在寻找 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();
    }); 
}
于 2012-12-19T05:30:08.487 回答
2

行。似乎不可能做到这一点,所以除非有人为 silverlight 和 flash 组件实现事件句柄,否则我不走运

于 2011-04-11T08:02:42.687 回答
0

我读了你的问题。

我发现了一些可能有助于解决这个问题的文章。检查他们。它可能会有所帮助......!

01. https://stackoverflow.com/questions/210643/in-javascript-can-i-make-a-click-event-fire-programmatically-for-a-file-input-e

02. https://stackoverflow.com/questions/2048026/open-file-dialog-box-in-javascript

于 2011-03-13T13:15:43.057 回答
0

@Per Hornshøj-Schierbeck 上传器初始化后。渲染输入文件以选择需要一些时间。所以你需要像下面这样等待:

this.uploader.init();
var task = new Ext.util.DelayedTask(function () {
    var inputArray = $('div.moxie-shim input[type=file]');
    var input = inputArray.length > 1 ? inputArray[inputArray.length - 1] : 
                inputArray[0];
    $(input).trigger('click');
 });

task.delay(100);

javascript中的代码类似。使用 plupload 2.3.6 为我工作

跳这个帮助!

于 2020-04-07T04:57:22.217 回答