MongoDBに画像ドキュメントを保存したい。私はJavaを使用しています。
リンクや提案をいただければ幸いです。
画像のようなバイナリデータを格納するには、 GridFS を使用するか、独自の実装を実装します。 driver をダウンロードしてsrc/test/com/mongodb/gridfs/GridFSTest.Java
を見てください;)
編集:今日はラッキーです!私はあなたのために完全なコードを作成しました;)お楽しみください!
package mongodb.testing.Java;
import com.mongodb.*;
import com.mongodb.gridfs.*;
import Java.io.*;
public class Main {
public static byte[] LoadImage(String filePath) throws Exception {
File file = new File(filePath);
int size = (int)file.length();
byte[] buffer = new byte[size];
FileInputStream in = new FileInputStream(file);
in.read(buffer);
in.close();
return buffer;
}
public static void main(String[] args) throws Exception {
//Load our image
byte[] imageBytes = LoadImage("C:/Temp/bear.bmp");
//Connect to database
Mongo mongo = new Mongo( "127.0.0.1" );
String dbName = "GridFSTestJava";
DB db = mongo.getDB( dbName );
//Create GridFS object
GridFS fs = new GridFS( db );
//Save image into database
GridFSInputFile in = fs.createFile( imageBytes );
in.save();
//Find saved image
GridFSDBFile out = fs.findOne( new BasicDBObject( "_id" , in.getId() ) );
//Save loaded image from database into new image file
FileOutputStream outputImage = new FileOutputStream("C:/Temp/bearCopy.bmp");
out.writeTo( outputImage );
outputImage.close();
}
}
小さい(1mb未満)画像の場合は、バイナリフィールド(Javaではbyte [])に保存することをお勧めします。より大きなファイルがある場合、GridFSはより適切に機能します。
単純なバイナリフィールドを使用して、多くのサムネイルをドキュメントに直接保存しています。
Morphia(http://code.google.com/p/morphia)を使用してPOJOを保存します。
まあ、私の知る限り、あなたはmongodbに画像を保存することはできません、画像へのリンクを保存できます。そして私が言うように私は高くありません、画像が100x100 pxのように小さい場合、Uはバイナリで画像を保存して、その場で画像を再構成して試すことができます。ただし、画像のレンダリングにはしばらく時間がかかるため、リンクを保存し、その画像をフェッチして動的に入力することをお勧めします。
GridFSを使用して、より大きなバイナリオブジェクトを格納できます。
MongoDBは初めてなので、以下をご覧ください。
また、いつでもSOに質問することもできます。私もmongoDBを初めて使用するので、初心者の手助けをしてもかまいません:D