1

Dojo アップローダーにドラッグ アンド ドロップ機能を追加するために、プロジェクトでこの例を再作成しようとしています。

http://archive.dojotoolkit.org/nightly/dojotoolkit/dojox/form/tests/test_Uploader.html

jsfiddle または私のアプリケーションでまったく同じコードをコピーする行

if(uploader.addDropTarget && uploader.uploadType=='html5'){

addDropTarget に対して undefined を返し、uploadType に対して iframe を返します。さまざまなブラウザで試してみましたが、アップローダーに force: html5 を追加しましたが、何も変わりませんでした。

dnd 以外はすべて正常に動作することに注意してください。

Dojo 1.8.1 を使用しています。

4

1 に答える 1

4

Dojo 1.8 では、アップローダーはまだ完全には AMD に準拠していません。したがって、トランク テストの例を 1.8 で機能させるには、必要な AMD モジュールではなく dojox.form.Uploader コンストラクターを使用して、プログラムでアップローダーを作成する必要があります。次のように :

<form method="post" action="UploadFile.php" id="myForm" enctype="multipart/form-data" >
    <fieldset>
        <legend>DnD Test</legend>
        <input class="browseButton" id="uploader"/>
        <input type="submit" label="Submit" data-dojo-type="dijit/form/Button" />
        <div id="files" data-dojo-type="dojox/form/uploader/FileList" data-dojo-props='uploaderId:"uploader"' ></div>
    </fieldset>
</form>

<div id="dropTarget">Drop files here !</div>

そしてJavaScriptで:

require([
    'dojo/parser',
    'dojo/dom',
    'dijit/registry',
    'dojox/form/Uploader',
    'dojox/form/uploader/FileList',
    'dojox/form/uploader/plugins/HTML5',
    'dojo/domReady!'
], function(parser, dom, registry, ready){

    var dropTarget = dom.byId('dropTarget'), uploader;

    parser.parse().then(function(){

        // You need to use dojox.form.Uploader, as in dojo 1.8, 
        // the module is not fully AMD compliant yet.

        uploader = new dojox.form.Uploader({
            name:'uploadedfile', 
            label:'Select Some Files',
            multiple:true, 
            force:'html5'
        }, 'uploader');

        uploader.startup();

        if(require.has('file-multiple')){
            console.debug("Adding a new drop target");
            registry.byId('uploader').addDropTarget(dropTarget); 
        }
    });
});

http://jsfiddle.net/psoares/6r2jZ/を参照してください

于 2013-08-13T14:54:17.003 に答える