2

このプラグインは、ページの読み込み時にblueimproot/server/php/filesにある画像ファイルを読み取ります。データベースからレコードを読み取り、「ダウンロード」HTML 構造をカスタム構造に置き換える必要があります。このプラグインを介して画像をアップロード/削除することで影響を受けるカタログ製品を表示したいと考えています。

私はこれまでこれを行ってきました:

  • データベースからレコードを取得するようにblueimproot/server/php/upload.class.phpを変更public function get() { ... }しました。この関数は json オブジェクトを返します。

    public function get() {
        /* default code of Blueimp
        $file_name = isset($_REQUEST['file']) ?
        basename(stripslashes($_REQUEST['file'])) : null;
        if ($file_name) {
            $info = $this->get_file_object($file_name);
        } else {
            $info = $this->get_file_objects();
        }
    
        header('Content-type: application/json');
        echo json_encode($info);
        */
    
        include_once('../../../../connection.php');
    
        $id_cat = $_REQUEST['catid'];
        $query = "SELECT id, name, price, img_path FROM products WHERE id_cat = $id_cat ORDER BY id";
        $prods = mysql_query($query);
    
        $prod_arr = array();
        while($prod = mysql_fetch_assoc($prods)) {
            $prod_arr[] = $prod;
        }
    
        header('Content-type: application/json');
        echo json_encode($info);
        }
    
  • blueimproot/server/phpindex.phpから関数が呼び出されていることがわかりました。

    switch ($_SERVER['REQUEST_METHOD']) {
        ...
        case 'GET':
            $upload_handler->get();
            break;
        ...
    

    }

返された json オブジェクトが処理されて UI に表示される場所がわかりません。2 日経ちましたが、まだ関数フローを追跡できません。助けてください。ありがとう。

元のオンライン デモ: http://blueimp.github.com/jQuery-File-Upload/

元のプラグインのダウンロード: https://github.com/blueimp/jQuery-File-Upload/downloads

4

3 に答える 3

3

私の提案は、Firebug で Network タブを開き、への GET リクエストを監視することserver/php/index.phpです。特定のイベントの後に発生した場合は、どこを見ればよいかがわかります。

ソースファイルを調べたところ、見つけたGETリクエストはmain.jsだけでした

$('#fileupload').each(function () {
  var that = this;
  $.getJSON(this.action, function (result) {
    if (result && result.length) {
      $(that).fileupload('option', 'done')
        .call(that, null, {result: result});
        }
    });
  });
}
于 2012-07-23T21:54:23.290 に答える
2
 public function get() {
    /*
    $file_name = isset($_REQUEST['file']) ?
        basename(stripslashes($_REQUEST['file'])) : null;
    if ($file_name) {
        $info = $this->get_file_object($file_name);
    } else {
        $info = $this->get_file_objects();
    }
    header('Content-type: application/json');
    echo json_encode($info);
    */
        $id_cat = $_REQUEST['catid'];
        $query = "SELECT id, name, price, img_path FROM products WHERE id_cat = $id_cat ORDER BY id";
        $prods = mysql_query($query);

        $prod_arr = array();
        while($prod = mysql_fetch_assoc($prods)) {
            //$prod_arr[] = $prod;

            $file = new stdClass();
            $file->name = "";// here image name goes i do not find image name in your select query
            $file->size = filesize($prod["img_path"]);// should be complete path
            $file->url =  $prod["img_path"];// should be relative path (http://localhost/images/234.jpg)
            $file->thumbnail_url = $prod["img_path"]; // thumbnail path
            $this->delete_type = "DELETE";
            $this->delete_url = ""; //here delete url you can delete image from database 
            array_push($prod_arr,$file);
        }
        header('Content-type: application/json');
    echo json_encode($prod_arr);
}
于 2012-07-28T18:20:35.257 に答える
2

この WIKI に従ってください: https://github.com/blueimp/jQuery-File-Upload/wiki/Working-with-databases

アップロードをデータベースに挿入するようにセットアップした後、GET 関数を次のように変更しました。

            public function get() {
                $uploads = $this->query_db();
                header('Content-type: application/json');
                echo json_encode($uploads);
            }

そして私のquery_db関数は次のとおりです:

         public function query_db() {
    $uploads_array = array();
    $select_result = $this->query("SELECT * FROM `uploads` ORDER BY `file_name`") or die(mysql_error());
    while($query_results = mysql_fetch_object($select_result))
        {   
            $file = new stdClass();
            $file->id = $query_results->id;
            $file->name = $query_results->file_name;
            $file->size = $query_results->file_size;
            $file->type = $query_results->file_type;
            $file->url = "http://files.domain.com/".$query_results->file_name;
            $file->thumbnail_url = "http://thumbnails.domain.com/".$query_results->file_name;
            $file->delete_url = "";
            $file->delete_type = "DELETE";
            array_push($uploads_array,$file);
        }
    return $uploads_array;
}
于 2012-10-03T15:31:59.010 に答える