0

Plupload を使用して Wordpress 用のギャラリー プラグインを作成していますが、小さな問題が発生しました。

私の計画は、ユーザーが新しいギャラリーの名前を入力し、ファイルをコンテナーにドロップしてアップロードできるようにすることです。(アップロードを開始するボタンはありません。)

私の「問題」は、ユーザーが 5 つのファイルをコンテナーにドロップすると、Plupload がupload.php5 回起動することです。

私の現在の「解決策」は、gallery_idが空かどうかを確認することです。空で空でgallery_nameない場合は、ユーザーが新しいギャラリーを作成していることを意味します。

しかし、これは 5 回すべて同じなので、addNewGAllery()が 5 回トリガーされます。

最初にギャラリーを作成してからファイルを追加することなく、新しいギャラリーを一度だけ作成し、5 つの画像をすべてこれに追加する最良の方法は何でしょうか?

var sim_gal_data = JSON.parse(JSON.stringify(sim_gal_data_arr));

//JS code
var uploader = new plupload.Uploader({
    runtimes : 'gears,html5,flash,silverlight,browserplus',
    browse_button : 'btn-file-browse',
    container : 'drag-drop-container',
    drop_element : 'drag-drop-container',
    max_file_size : sim_gal_data['max_file_size'],
    url : sim_gal_data['upload_url'],
    multi_selection : true,
    multiple_queues: true,
    flash_swf_url : sim_gal_data['plupload_url']+'plupload.flash.swf',
    silverlight_xap_url : sim_gal_data['plupload_url']+'plupload.silverlight.xap',
    filters : [
      {title : "Image files", extensions : "jpg,gif,png"}
    ],
    multipart_params: {
      gallery_name : ''
    },
    init : {
      FilesAdded: function(up, files) {

        // Don't initiate upload if there is no gallery name
        if(jQuery('#image-upload .gallery-name').val().length > 0){
          if(files.length > 0) {

            // Get gallery name
            uploader.settings.multipart_params['gallery_name'] = jQuery('#image-upload .gallery-name').val();

            // Create list of files being uploaded
            jQuery.each(files, function(i, file) {
                jQuery('#filelist').append(
                    '<div id="' + file.id + '" class="file_upload">' +
                      '<div class="file_name">' + file.name + ' (' + plupload.formatSize(file.size) + ')</div>' +
                      '<label class="file_progress"><b></b></label>' +
                     '</div>'
                );
            });

            // Ready set go!
            up.refresh();
            up.start();
          }
        } else {
          // Remove files from upload list
          up.splice(0);
        }
      }
    }
});
4

1 に答える 1

1

ギャラリーIDパラメーターを定義する

multipart_params: {
  gallery_name : '',
  gallery_id: ''
},

最初のアップロードgallery_idでは空なので、ギャラリーを作成します。次に、新しい応答オブジェクトを返送しますgallery_id

//upload.php
die(json_encode(array(
    'success': 1,
    'gallery_id': $gallery_id
)));

応答をキャッチし、plupload設定を更新します

FileUploaded: function(up, file, response) {
    var res = jQuery.parseJSON(response.response);
    if (res.success) {
        up.settings.multipart_params['gallery_id'] = res.gallery_id;
    }
}
于 2013-03-03T13:13:56.723 に答える