我想创建一个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应该如何工作?为什么上传者在选择文件后没有上传文件?
答案 0 :(得分:0)
简单信息;因为我不确定这是否适用于您的问题 - 但如果与传统加载器(同步XHR pre 1.7加载器)一起使用,则上传器效果最佳。这是由于作者选择插件的架构(flash / iframe / html5)的方式。但是,它不应该搞乱事件处理
或者,测试版本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"'