2016-12-14 12 views
0

私はnode.jsを使い慣れていて、通常のアプリケーションと同じようにユーザーの写真を保存するアプリケーションを作ろうとしています。ユーザーはプロフィール写真を設定でき、壁に他の写真も追加できます。マングースドメインに画像を保存する最も良い方法

私はアプリケーションの他の部分もやっていますが、私はそれらの画像を保存する最良の方法を理解しようとしています。私のアプリケーションでは、ユーザーの数を大きな数字。

私は、参照:

(グリッド-FS経由のmongoに画像を保存する)http://blog.robertonodi.me/managing-files-with-node-js-and-mongodb-gridfs/と私は最良の選択肢だろうかと思っています: How to upload, display and save images using node.js and express(サーバー上の画像を保存するために)

ともに。

私は何を根絶する必要があるのでしょうか?これは、アプリケーションのニーズに依存

おかげで、

答えて

0

は、私は同様の用途のためにやったきた一つのことは、サーバアプリケーションのファイル・ストレージ・ロジックの上に抽象化を作成することでした。

var DiskStorage = require('./disk'); 
var S3Storage = require('./s3'); 
var GridFS = require('./gridfs'); 

function FileStorage(opts) { 
    if (opts.type === 'disk') { 
    this.storage = new DiskStorage(opts); 
    } 

    if (opts.type === 's3') { 
    this.storage = new S3Storage(opts); 
    } 

    if (opts.type === 'gridfs') { 
    this.storage = new GridFS(opts); 
    } 
} 

FileStorage.prototype.store = function(opts, callback) { 
    this.storage.store(opts, callback); 
} 

FileStorage.prototype.serve = function(filename, stream, callback) { 
    this.storage.serve(filename, stream, callback); 
} 

module.exports = FileStorage; 

基本的には、ユーザーがアップロードしたコンテンツを保存するためのロジックの実装が異なります。そして、必要なときには、ローカルのファイルストレージ/モンゴーグリッドからS3への拡張が可能です。しかし、シームレスに移行するために、ユーザーファイルの関係をデータベースに格納する場合は、ローカルまたはS3のファイルプロバイダも格納できます。

ローカルファイルシステムに直接画像を保存することは、多くのアップロードされたコンテンツについて話しているときに少し複雑になることがあります。How many files can I put in a directory?のような制限があります。 GridFSにはこのような問題はないはずですが、私はファイルストレージとしてMongoDBを使った経験がありましたが、これはアプリケーションによって異なります。

関連する問題