大家好,首先非常感谢您阅读我!我将 Dojo 1.7.2 与 Domino 8.5 服务器一起使用,将带有多个用户选择的文件的表单数据提交到数据库。
我在dojox.form.Uploader
仅 IE(7 和 8)环境中使用 Flash 插件(启用多个文件选择)。(由于“访问被拒绝”错误,iFrame 插件无法与我们的 IE 一起使用)
一个文件一切正常,但是一旦用户想要上传多个文件,POST 的提交次数与文件数量一样多。
例如,如果用户想要发送他的数据 + 3 个选定的文件,在他单击一次我的“提交”按钮后,Domino 服务器将收到 3 个 POST(每个包含一个文件和表单数据),导致 3 个不完整的记录:所有表单数据都存在于每条记录中,只有 3 个文件中的一个: 记录 1:相同的表单数据和文件 1 记录 2:相同的表单数据和文件 2 记录 3:相同的表单数据和文件 3
我想收到 1 个 POST :表单数据和 3 个文件
我不知道这是否是它应该工作的方式(在http://dojotoolkit.org/reference-guide/1.7/dojox/form/Uploader.html#id7和http上找不到任何详细信息 ://dojotoolkit.org/documentation/tutorials/1.7/uploader/)或者如果我设置错误。
非常感谢任何帮助!
附加信息:Domino 的 HTML 文件上传名称非常具体,并且包含%
和$
(例如:) ,%%File.c1257b1a0053689e.fdbe327b47e4b280c1257b35005b38e5.$Body.0.33B4
所以我不得不使用encodeURIComponent
它们。'flash'
出于测试目的,我通过从插件切换到“”成功地使其与 Firefox 上的 iFrame 插件一起使用iframe
。
// Dijit form containing dojox.form.Uploader
this._oForm = new dijit.form.Form({
name: "_mMsg",
method: "POST",
action: "/mMsg?CreateDocument",
encType: 'multipart/form-data',
onSubmit: function(){
return true;
}, "idForm_" + sMsgId);
this._oFileUploader = new dojox.form.Uploader({
id: "idFileUploader_" + sMsgId,
label: "Add files",
iconClass: "ButtonAttachFile",
multiple: true,
force: 'flash',
swfPath: dojo.baseUrl + '../dojox/form/resources/uploader.swf?Open',
serverTimeout: 180000,
isDebug: true,
devMode: true,
deferredUploading: 10, //Max # files uploaded simultaneously
fieldname: encodeURIComponent(sFileUploadControlName),
name: encodeURIComponent(sFileUploadControlName),
flashFieldName: encodeURIComponent(sFileUploadControlName),
"class": "FileUploader",
onComplete: dojo.hitch(this, '_onCompleteUploadFlash'),
onError: dojo.hitch(this, '_onErrorUploadFlash')
});
var oForm = {
Form: "mFile",
MsgId: sMsgId,
MsgDbKey: sMsgDbKey
Body:sBody,
Subject:sSubject
};
this._oFileUploader.upload(oForm);
非常感谢提前!