1

こんにちは。まず第一に、私を読んでくれてありがとう!Dojo 1.7.2 を Domino 8.5 サーバーで使用して、ユーザーが選択した複数のファイルを含むフォーム データをデータベースに送信しています。

dojox.form.UploaderIE (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);  

よろしくお願いします!

4

0 に答える 0