我正在使用 dojo 1.7.2 我一直在尝试让文件上传器与 PHP 中的 REST 服务一起使用。这是我的功能:
dojo.connect(dijit.byId("CNCFileUploader"), "onComplete", function(dataArray){
alert("onComplete Fired!");
dojo.forEach(dojo.isArray(dataArray) ? dataArray : [dataArray], function(resp){
console.log("display:", resp.file, resp.duplicates);
});
});
这是我的标记:
<div data-dojo-type="dijit.Dialog" id="addCncIdsFileDialg" >
<form method="post" data-dojo-type="dijit.form.Form" id="addCncIdsFileFrm" enctype="multipart/form-data" action="CartService.php/cart/156568/cncidfiles">
<fieldset>
<legend>Upload File(s) with CNC_IDs</legend>
<div align="center">
<input type="file" multiple="true" name="CNCFileUploader" id="CNCFileUploader" data-dojo-type="dojox.form.Uploader" uploadOnSelect="false" /> <br/>
<button data-dojo-type="dijit.form.Button" type="submit" data-dojo-props="onClick:function(){dijit.byId('addCncIdsFileDialg').hide();}" id="cncIdsFSubmitBttn">OK</button>
<button data-dojo-type="dijit.form.Button" type="button" data-dojo-props="onClick:function(){dijit.byId('addCncIdsFileDialg').hide();}" id="cncIdsFCancelBttn" >Cancel</button>
</div>
<div id="CNC_IDfiles" dojoType="dojox.form.uploader.FileList" uploaderId="CNCFileUploader"></div>
</fieldset>
我从来没有看到警报。对于 IE9,我看到文件已上传和处理。有趣的是,当我选择一个文件时,日志显示第二个文件的名称为空且错误=4。此外,虽然 onComplete 永远不会发生,但 IE9 会提示我是否要从本地主机保存 cncidfiles。上传只会在第一次工作之后它什么都不做,之后就再也不会了。
当我将多个标志更改为 false 时,上传器完全停止工作。将以下内容写入 JavaScript 控制台:
TypeError: Unable to get value of the property 'value': object is null or undefined
TypeError: Unable to get value of the property 'value': object is null or undefined
第二个问题是,当我使用 Google Chrome 时,每次都会发送文件,但我在服务器上看到的与 dojo 在其 Uploadfile.php 中记录的内容大不相同。
我相信 dojox.form.Uploader 在 1.7.2 中在几个重要方面被严重破坏!
出于沮丧,我尝试使用 dojo.io.iframe.send,但 Chrome 工作正常,IE9 仍然像它想要下载 cncidfiles 一样,也只能在第一次工作。