3

wordpress プラグイン (管理者ではなくフロントエンド) で plupload を使用する際のヘルプを探しています。

私はすべてhtml5で動作していますが、ブラウザがhtml5(つまりIE)をサポートしていない場合、理論的にはフラッシュ、シルバーライトなどに切り替える必要がありますが、そうではありません。ランタイムにフラッシュを入れてみましたが、初期化に失敗しました (おそらくブラウザーが html5 を使用しようとして失敗したため)、しばらくするとエラー -500 が発生しました。

重要かもしれませんが、JS は AJAX からのリターンでアップロード フォームが表示された後に実行されます。しかし、私が言うように、すべて html5 で問題なく動作していますが、フラッシュへの切り替えなどは行われていません。

だから問題はフラッシュなどにフォールバックしない理由だと思います。

一部のコード スニペットは、ファイル参照に続きます。

次のようにpluploadスクリプトをロードしています:

wp_enqueue_script('plupload-all');

HTML フォームは次のとおりです。

echo '<div class="uploader" id="symposium_activity_uploader" style="display:none">';
  echo '<a id="pickfiles" href="#">Attach an image</a>';
  echo '<div id="progressbar"></div>';
echo '</div>';
echo '<div id="symposium_filelist" class="cb"></div>';

DOM に HTML フォームが含まれている場合に実行される JS は次のとおりです。

// Settings ////////////////////////////////////////////////
var uploader = new plupload.Uploader({
    runtimes : 'html5,flash,silverlight,gears,html4', 
    flash_swf_url : '/wp-includes/js/plupload/plupload.flash.swf',
    silverlight_xap_url : '/wp-includes/js/plupload/plupload.silverlight.xap',
    browse_button : 'pickfiles', 
    max_file_size : '1mb', 
    urlstream_upload : true, 
    multipart : true,
    multi_selection: false, 
    resize : {width : 300, height : 300, quality : 90}, 
    container : 'symposium_activity_uploader', 
    url : '/wp-content/plugins/wp-symposium/ajax/dothisnext.php', 
    filters : [ {title : "Image files", extensions : "jpg,gif,png"} ] 
});

uploader.bind('Init', function(up, params) {
    jQuery('#symposium_filelist').html("<div>Current runtime: " + params.runtime + "</div>");
    jQuery('#symposium_activity_uploader').show();
});

// Init ////////////////////////////////////////////////////
uploader.init(); 

// Selected Files //////////////////////////////////////////
uploader.bind('FilesAdded', function(up, files) {
    jQuery.each(files, function(i, file) {
        jQuery('#symposium_filelist').append('<div class="addedFile" id="' + file.id + '">' + file.name + '</div>');
    });
    up.refresh(); 
    uploader.start();
});

// Error Alert /////////////////////////////////////////////
uploader.bind('Error', function(up, err) {
    alert("Error: " + err.code + ", Message: " + err.message + (err.file ? ", File: " + err.file.name : "") + "");
    up.refresh(); 
});

// Progress bar ////////////////////////////////////////////
uploader.bind('UploadProgress', function(up, file) {
    var progressBarValue = up.total.percent;
    jQuery('#progressbar').fadeIn().progressbar({
        value: progressBarValue
    });
    jQuery('#progressbar .ui-progressbar-value').html('<span class="progressTooltip">' + up.total.percent + '%</span>');
});

// Close window after upload ///////////////////////////////
uploader.bind('UploadComplete', function() {
    jQuery('.uploader').fadeOut('slow');
});

flash_swf_url と silverlight_xap_url へのパスは手動で確認されています。

アップロード画像を受け取るコードは掲載していませんが、これは機能しているため、上記で dothisnext.php と呼ばれています。

要約すると、私の質問は、html5 が動作している間、html5 をサポートしていないブラウザーの場合、ランタイムがフラッシュやシルバーライトなどに切り替わらないということです。重要なステップを見逃していませんか?

4

0 に答える 0