こんにちは。まず第一に、私を読んでくれてありがとう!Dojo 1.7.2 を Domino 8.5 サーバーで使用して、ユーザーが選択した複数のファイルを含むフォーム データをデータベースに送信しています。
dojox.form.Uploader
IE (7 および 8) のみの環境で Flash プラグイン (複数ファイル選択が有効) を使用しています。(「アクセスが拒否されました」エラーのため、iFrame プラグインは IE では動作しません)
すべてが 1 つのファイルで問題なく機能しますが、ユーザーが複数のファイルをアップロードしようとすると、ファイルの数だけ POST が送信されます。
たとえば、ユーザーが自分のデータと選択した 3 つのファイルを送信したい場合、[送信] ボタンを 1 回クリックすると、Domino サーバーは 3 つの POST (それぞれに 1 つのファイルとフォーム データを含む) を受信し、3 つの不完全なレコードが生成されます。すべてのフォーム データは、次の 3 つのファイルのうちの 1 つだけを含む各レコードに存在します: レコード 1: 同じフォーム データとファイル 1 レコード 2: 同じフォーム データとファイル 2 レコード 3: 同じフォーム データとファイル 3
フォーム データと 3 つのファイルを含む 1 つの POST を受け取りたい
これが機能するはずの方法であるかどうかはわかりません( http://dojotoolkit.org/reference-guide/1.7/dojox/form/Uploader.html#id7でもhttpでも詳細な情報を見つけることができませんでした://dojotoolkit.org/documentation/tutorials/1.7/uploader/ ) または間違った方法で設定した場合。
どんな助けでも大歓迎です!
追加情報: Domino の HTML ファイル アップロード名は非常に具体的で、%
and $
(例: %%File.c1257b1a0053689e.fdbe327b47e4b280c1257b35005b38e5.$Body.0.33B4
) が含まれているため、encodeURIComponent
それらを使用する必要がありました。テスト目的で、'flash'
プラグインから ' iframe
' に切り替えるだけで、Firefox の 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);
よろしくお願いします!