私は気に入ったアプリケーションがあります。画像やその他の関連情報はMongoDbに保存されています。一般に、画像のサイズは約1Mbです。画像は無限のスクロールで表示されます。 base64文字列を含む長いスクリプトが読み込まれると、ブラウザがクラッシュしたり、応答時間が非常に長くなります(特にInternet Explorerの場合) MongoDbに保存されている画像を表示する最適な方法は何ですか?MongoDbに保存されている画像を表示する
答えて
このアプリケーションのサーバー側の部分はありますか?なぜ画像を取得するための小さなAPIを作成しないのですか?
あなたのブラウザは画像に関する情報を持っており、http://your_server/api/image/imageID
またはhttp://your_server/images/imagename
という行にサーバーに問い合わせることができます。サーバーはこのイメージをストリームするだけです。これをファイルシステムに保存する必要はありません。
クライアント側(ブラウザ)では、「遅延読み込み」を実装するだけで済みます。
なぜmongodbに画像を保存しませんか? – TeodorKolev
これを達成する最良の方法は、サーバー上の一部のパブリックフォルダに物理的にファイルすることです。これはあなただけあなたはまだバックアップとしてMongoDBの中であなたのBase64イメージを維持することができます
のようなものを使用する必要がありますようにづけしなければなりません、しかし、これはするための最良の方法ではありませんあなたが見たように、パフォーマンスの問題が原因でイメージを取得します。次のことをお勧めします:
イメージをmongoに保存するたびに、サーバー上の公開されている場所にイメージファイルを保存するようにしてください。使用しているmongoモデルにそのファイルへのパスを保存する必要があることに注意してください。したがって、次回はオブジェクトを呼び出すときにベース64イメージを取得するのではなく、イメージへのパスのみを取得する必要があります。
あなたがそれに問い合わせる次回は、あなただけのmongo投影を使用してimage64を無視することができ、あなたのクライアント側にはあなただけ使用する一部のHTMLタグを使う
myModel = {
name: "some name",
image64: "someextralongstringveryveryveryweird......",
imageUrl: "/images/my/path/to/image/imagename-id.jpg"
}
あなたがこのモデルを持っている、と言うことができますそのURLの。
<img src="/images/my/path/to/image/imagename-id.jpg">
これはパフォーマンスの向上に役立ちます。
イメージファイルの作成を管理するのに役立つライブラリがいくつかあります。 ImageMagickは私が使用しているものであり、多用途です。
なぜ画像をmongodbに保存しないのですか? – TeodorKolev
ファイル自体を取得するよりも、URLを含むクエリをファイルに取り込む方がはるかに高速です。これは、別の観点から質問に答えてくれると思います。https://stackoverflow.com/questions/7703867/storing-image-files-in- mongo-database-is-it-a-good-idea – Roger
MongoDBを使用している場合は、GridFS(http://excellencenodejsblog.com/gridfs-using-mongoose-nodejs/)を使用してデータベースに画像を保存する必要があります。この機能は、アプリケーションの仮想ファイルシステムのようなものを公開します。
GridFSを使用すると、MongoDBインスタンスから要求されたファイルをストリームし、ファイルの内容を応答にパイプするコントローラメソッドを記述することができます。
画像に関するご質問は、テキストファイルのリンクを掲載しています。良い仕事 – TeodorKolev
イメージをファイルシステムに保存し、Webサーバーを使用してクライアントに配信することをお勧めします。 パフォーマンスのために、私はそれらをトラフィックを処理することができるCDNに置くでしょう。
アプリケーションストレージ(mongo)では、URL /場所を画像に保存してから、JavaScriptコードで画像を取得する際に使用できます。
また、あなたのコードでは、画像をプリロードするjavascriptを使用して画像をプリロードすることをお勧めします。そこにはいくつかの素晴らしいツールがあり、それを活用することができます。
ストレージを変更することができず、mongoをそのまま使用する必要があります。の画像をjavacriptで事前ロードしています。
DBに保存したいのですが? – TeodorKolev
@ TeodorKolev、それらをdbに保存することができます。私は、バイナリファイルをbase64でエンコードし、dbに格納することをお勧めします。次に、別のプロセスを介してバイナリに戻したい場合、base64イメージを提供することができます。パフォーマンス上の問題も考慮する必要があります。 –
これには良い例がありますか? – TeodorKolev
- 1. Mongodbに保存されている画像を取得して表示する方法
- 2. データベースにギャラリーとして保存されている画像を表示する
- 3. Laravel 5.3に保存されている画像が表示されない
- 4. 電話に保存された画像を表示する
- 5. MongoDB GridFSに画像を保存する
- 6. Laravel 5.1 - 保存フォルダに保存された画像を表示する
- 7. ハードディスクに保存せずにs3に保存されている画像を表示する方法は?
- 8. (mysql dbに保存されている)phpファイルの画像を表示
- 9. 画像を保存する:MongoDbとファイルシステム
- 10. 保存せずに画像を表示
- 11. バッファMASM 5.1に保存された画像ファイルを表示
- 12. 画像を保存して別のクラスに表示する
- 13. アンドロイドスタジオに画像を保存して表示する
- 14. 保存フォルダに保存されている画像を取得する
- 15. サンドボックスに保存されている画像を回転する
- 16. MongoDBデータベースに画像を保存
- 17. PHPの画像を使ってSQLite3に保存された画像を表示する
- 18. Herokuアプリに保存されている画像が表示されていませんか?
- 19. grailsプロジェクトの外側に保存された画像を表示する方法
- 20. MATLABで変数に保存された画像を表示する方法は?
- 21. セッションとアプリケーションプール:画像を保存して表示するASP.NETアプリ
- 22. アップロードした画像を保存して表示する
- 23. 画像を保存して表示する
- 24. 画像のパスを保存したデータベースの画像を表示
- 25. 背景画像は存在するが表示されない
- 26. Yii2データベースに保存されていないが、フォルダに保存されている画像名
- 27. Android:データベースに保存されているURIの画像サムネイルギャラリー
- 28. HTML:ページが保存されているときに画像/ファイルが保存されていない
- 29. APKファイルに画像が表示されていて、その画像を非表示にする理由
- 30. Android - 画像を手動で保存し、プリロードされたデータベースから画像を表示する
イメージのbase64エンコーディングの要件はありますか? Mongoはバイナリデータをサポートしています... –