选择使用带有AJAX的Dojo Uploader

时间:2012-11-02 17:14:02

标签: ajax file-upload dojo uploader

我想创建一个Dojo Uploader按钮。

当用户完成选择文件时,我想立即将文件上传到服务器(不要等待提交点击)。

这是我的代码:

<script type="text/javascript">
require(["dojo/parser", "dojox/form/Uploader", "dojox/form/uploader/plugins/IFrame", "dojox/form/uploader/FileList", "dojo/domReady!"],
   function(parser) {
      parser.parse();
});
</script>

在HTML doc的主体中:

<input name="restoreFile" multiple="false" type="file" id="restoreBtn"
       data-dojo-type="dojox/form/Uploader"
       data-dojo-props='label: "Upload", 
                        url: "<s:url action="restore-backup" />", 
                        uploadOnSelect: "true"' />
<div id="fileList" data-dojo-type="dojox/form/uploader/FileList" 
     data-dojo-props='uploaderId: "restoreBtn"'></div>

我尝试将这两个标记放入表单标记中,但行为没有变化。

当我点击上传器时,我看到了文件选择器。 当我选择文件并单击“打开”时,FileList显示所选文件,但没有任何内容发送到服务器。

我尝试过要求所有三个上传器插件,HTML5(在IE中不支持,但在Chrome中也不能正常工作),IFrame和Flash。

我误解了uploadOnSelect应该如何工作?为什么上传者在选择文件后没有上传文件?

3 个答案:

答案 0 :(得分:0)

简单信息;因为我不确定这是否适用于您的问题 - 但如果与传统加载器(同步XHR pre 1.7加载器)一起使用,则上传器效果最佳。这是由于作者选择插件的架构(flash / iframe / html5)的方式。但是,它不应该搞乱事件处理

  • 我在想,尝试将其设置为编程组件 - 在dojo.ready和dojo.parser完成任务之后......

或者,测试版本1.6是否可行 - 或者如果设置dojo.config.async = false可以帮助您。

答案 1 :(得分:0)

您可以将dojox.form.Uploader与dojox.form.uploader.FileList一起使用。只需将这两个声明如下。

up = new dojox.form.Uploader({
            label: 'Select files',
            multiple: true,
            class:"browseButton",
            url: "UploadFile.php"
        }).placeAt(form);

        list = new dojox.form.uploader.FileList({
            uploader: up
        }).placeAt(form);

        btn = new Button({
            label: 'upload',
            onClick: function() {
                up.upload();
            }
        }).placeAt(form);

        btn.startup();
        up.startup();
        list.startup();

答案 2 :(得分:0)

我确实尝试过同样的事情,并且在删除引号后也奏效了 (使用Dojo 1.10)

data-dojo-props="uploadOnSelect: true" 而不是 data-dojo-props='uploadOnSelect: "true"'