はじめに:この深いピットうん、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