ファイルストレージシステムのためのMongoDB

はじめに:この深いピットうん、PHPでのMongoDBの対応するバージョンにバージョンをサポートし、あなたが作曲は、サードパーティのライブラリをインストールし使用した場合、その後、一から一でなければなりません

 

 

 

 

ポジティブなスタート!

 

開発環境:

システム:窓

開発言語:PHP + Apacheの+ TP5

 

一、窓下安装のMongoDB:http://baijiahao.baidu.com/s?id=1601512248926547477&wfr=spider&for=pc

第二に、作曲をダウンロードすることにより、サードパーティのライブラリ(パッケージクラス)

mongosStorage.php

<?PHP
 / * * 
 * PhpStormによって作成されます。
 *ユーザー:GaN系
 *日:2019年10月22日
 *時間:14時58分
 * / 
名前空間のApp \共通\ libに; // 名前空間の
クラスmongosStorage { 

    // 1、しなければなりません静的プライベートプロパティ定義
    // 2を、プライベートコンストラクタを定義
    // 3を、シングルトンは、統一された交差点を形成するために、複数の新しい同じオブジェクトを避けるためです
    プライベート 静的 $ OBJ = ヌル;
     プライベート $コレクション = ヌル;
     プライベート 機能__construct ()
    { 
        $この - > =コレクション(新新 \ MongoDBの\クライアント) - > Storage->selectGridFSBucket(); 
    } 

    パブリック 静的 関数singleEntranceは(){
         //は、オブジェクトが通過インスタンス化されるかどうかを決定する
        IF(!セルフ:: OBJ $ instanceofのセルフ){ 
            自己 :: $ OBJ = 新しい新しい自己(); // 必要でない場合は何の例
        }
         を返す自己:: $ OBJを; 
    } 

    // 外部クローン防ぐ
    公共 機能を__clone()
    { 
        // TODO:__clone()メソッドを実装します。
    } 

    / * * 
     * @paramの$ファイル名(ファイル名のみ、なしパス)
     * @パラメータ$のファイルパス(絶対ファイルパス)
     * / 
    パブリック 関数デポジット($ファイル名$ファイルパス){
         $ストリーム = $この - >コレクション- > openUploadStream($ファイル名);
         $内容 =用のfile_get_contents$ファイルパス);
         fwriteの$ストリーム$内容);
         fcloseを$ストリーム); 
    } 

    / * * 
     *ファイルIDを取得する
     * @paramの$ファイル名(ファイル名のみ、パスなし)
     *ミックス@return 
     * / 
    パブリック 関数 getFileId($ファイル名 = ''){
         $ストリーム = $この - >コレクション- > openDownloadStreamByName($ファイル名)。
        $ FILEID = $この - >コレクション- > getFileIdForStream($ストリーム);
        返す $ FILEID 
    } 


    / * * 
     *取
     * @paramの$ファイル名(仅仅是文件名、不需要路径)
     * / 
    パブリック 関数テイク($ファイル名 = '' ){
         $ストリーム = $この - >コレクション- > openDownloadStreamByName($ファイル名、[ '改正' => 0]);
        リターン stream_get_contents$ストリーム); 
    } 

}

 

第二に、それは、HTML上に表示されます

 

 

 

*私が堆積しているため、コンテンツの種類は保存されませんので、時間少し手間がかかります*

画像PHPを生成することにより、二値画像を除去した後、HTML形式の画像表示要求

 

画像操作コントローラファイルコード

<?PHP 

/ * * 
 * RMS图片操作控制器FLY 
 * @author飛ぶ
 * 2018年9月30日午前15時52分21秒
 * / 

名前空間のアプリ\管理者\コントローラを、
使用し、共通の\ libに\ mongosStorage \アプリを。
使用\コントローラーを考えます。
使用要求\と思います。

クラスの画像は、拡張管理
{ 

    
    // 上传功能
    公共 機能のアップロード(){ 
        
        $リターン = 配列 => '秋'、 'MSG'を
                、 'コード' => 201 
                => ''、 'mongodb_id' 
                'ファイル名を' =>」 」
        );
        
        


            // 次のフレームのアプリケーションルート/公共/アップロード/ディレクトリに移動
            $ファイル > - ()=リクエストをファイル( 'イメージ' );
             $ file_nameに = '' ;
             $ mongodb_id = '' ;
             IF$ファイル){ 

                $のroot_path __DIR __ = "/../../../公開/アップロード/ TemporaryFile /。" ; 

                // 別のファイルに保存されているさまざまなモジュール
                IF(!is_dir$のroot_path )){
                    ます。mkdir$のroot_path、0777、真の); 
                } 
                $ SAVENAME = DATE( 'YmdHis')。ランド(10000、99999 );
                $情報 = $ファイル - >移動($のroot_path$ SAVENAME )。
                もし$インフォ){
                     $ file_nameに = $情報 - > getFilename();
                    $ OBJ = mongosStorage :: singleEntrance();
                    $ OBJ - >入金($ file_nameに$のroot_path$ file_nameの);
                    $ mongodb_id = $ OBJ - > getFileId($ file_nameに)。
                    設定を解除$インフォ); // オンライン検索は、彼らがそうTP5のあることである 
                    @のリンク解除$のroot_path$ file_nameに); // 一時ファイルを削除 
                } {
                     スロー 新しい新 \ 例外$ファイルを - > getError()); 
                } 
            } 
        
            $戻る [ 'コード'] = 200である;
             $リターン [ 'MSG'] = "成功" ;
             $リターン [ 'mongodb_id'] = $ mongodb_id ;
             $リターン[ 'ファイル名'] = $ file_nameに
        } キャッチ(\ 例外 の$ E ){
             $戻り [ 'MSG'] = $ E - > のgetMessage()。
        } 
    
        ダイ(json_encode($リターン)); 
    } 

    / * * 
     *获取图片
     * / 
    パブリック 関数のgetImage(){
         ヘッダ( "コンテンツタイプ:image / PNG" );
        $ file_nameに =入力( 'file_nameに' );
        もし$ file_nameの){
             $ OBJ = mongosStorage ::singleEntrance();
            $ファイル = $ OBJ - >テイク($ file_nameに)。
            エコー $ファイル; 
        } 
    } 

}

テンプレートファイルのコード

  <DIV クラス = "layui状項目"> 
      <IMG SRC = "{:URL( '/管理/画像/のgetImage'、[ 'FILE_NAME' => '2019102416593634834.jpg'])}" /> 
  </ DIV >

第三に、結果は

 

 

 

それはテストですので、スタイル・プロセスを行うには何もありませんので、しかし、セルフテストが可能です

 

URLをするために使用することができます。

 MongoDBのダウンロードサイト次のウィンドウ:https://www.mongodb.org/dl/win32/x86_64-2008plus-ssl?_ga=2.30821752.638885743.1535763516-1240051369.1535763516

Mongoのドキュメント:https://docs.mongodb.com/ecosystem/drivers/php/

作曲インストールサードパーティのライブラリの説明:https://github.com/mongodb/mongo-php-library/releases

おすすめ

転載: www.cnblogs.com/FLy-1992/p/11737208.html