多文件Flash上传程序

Multi-file Flash Uploader

本文关键字:程序 Flash 文件      更新时间:2023-09-26

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

下面是我的代码的大致概要。我加载了Flash插件,所以Uploader将在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();
});

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

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

所以,我想你不需要加载任何插件,上传程序会帮你完成的。

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

在与Uploader的Flash插件进行了斗争之后,我得到了以下(令人失望的)结果:

  • IE无法很好地处理多个附件。我用has("ie")嗅探了用户代理,并与其他浏览器不同地处理IE的附件上传。说完,我愤怒地向IE挥舞拳头,并诅咒它的家人
  • 除非我在Uploader上设置了force="flash",否则所有其他浏览器都将使用HTML5插件,这非常有效
  • IFrame插件是IE的禁区。更多的咒骂和愤怒的拳头抖动

这总体上有点令人失望,因为Dojo本应为所有主要浏览器(不幸的是,IE仍包含在其中)提供跨平台支持,但dojox捆绑包仍然有点bug。希望这个功能能在2.0中得到改进。