多文件Flash上​​传器

时间:2013-07-23 13:52:46

标签: javascript forms internet-explorer file-upload dojo

我正在使用Dojo 1.8。我已经定义了一个支持Firefox,Chrome和Safari中的多个附件的上传器,但是当我在IE9中提交表单时,会发出多个POST请求而不是一个。

以下是我的代码的粗略概要。我加载Flash插件,以便上传器将在IE中运行(IFrame和HTML5插件不起作用)。有什么理由说明为什么这个行为与IE以外的其他浏览器的行为差别很大?

define([
    'dojox/form/Uploader',
    'dojox/form/uploader/FileList',
    'dojox/form/uploader/plugins/Flash'
], function(Uploader, FileList) {

...

    this.u = new dojox.form.Uploader({
        label: "Browse...",
        multiple: true,
        uploadOnSelect: false,
        url: 'uploadServlet'
    });

    this.list = new FileList({
        uploader: u
    });

...

    this.u.startup();
    this.list.startup();

});

3 个答案:

答案 0 :(得分:1)

dojo 1.9.1 上,Flash插件会显示以下警告消息:

  

dojox.form.uploader.plugins.Flash已被删除。您可以直接使用Uploader,它将包含所有必要的功能。

所以,我猜你不需要加载任何插件,Uploader会为你做这件事。

答案 1 :(得分:0)

这是Flash插件的默认行为。所有其他支持带有multiple =“true”的HTML5文件输入的浏览器都使用HTML5插件,除非你强制使用flash。

答案 2 :(得分:0)

在与上传器的Flash插件搏斗后,我得出以下(令人失望的)结果:

  • IE无法很好地使用多个附件。我使用has("ie")嗅探了用户代理,并处理了与其他浏览器不同的IE上传附件。在此之后,我愤怒地摇晃着拳头,并诅咒其家人。
  • 除非我在上传器上设置force="flash",否则所有其他浏览器都会使用HTML5插件,效果很好。
  • IFrame插件对于IE来说是不可取的。更多的诅咒和愤怒的拳头颤抖。

这总体上有点令人失望,因为Dojo应该为所有主流浏览器启用跨平台支持(遗憾的是IE仍然包含在内),但是dojox捆绑包仍然有点儿错误。希望这个功能在2.0中有所改进。