GridFS文件存储
使用命令行操作GridFS
提前创建好文件
1.上传文件
现在我们使用 GridFS 的 put 命令来存储 GridFS存储.ppt文件。 调用 MongoDB 安装目录下bin的mongofiles.exe工具。 打开命令提示符,进入到MongoDB的安装目录的bin目录中,找到mongofiles.exe,并输入下面的代码:
- mongofiles
- mongofiles -d gridfs put GridFS存储.ppt
-d gridfs指定存储文件的数据库名称,如果不存在该数据库,MongoDB会自动创建。如果不存在该数据库,MongoDB会自动创建。GridFS存储.ppt 是文件名。
2.查看文件信息
使用以下命令来查看数据库中文件的文档:
- db.fs.files.find()
以上命令执行后返回以下文档数据:
3.查看块信息
我们可以看到 fs.chunks 集合中所有的区块,以下我们得到了文件的 _id 值,我们可以根据这个 _id 获取区块(chunk)的数据:
分块数目 1个 = 12800 / 261120 向上取整
3.2查看块内容
- db.fs.chunks.find({files_id:ObjectId(“607e42e9df6dabc8251064e4”)})
4.下载文件
Java访问GirdFS
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;import org.bson.Document;
import org.bson.types.ObjectId;import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.gridfs.GridFSBucket;
import com.mongodb.client.gridfs.GridFSBuckets;
import com.mongodb.client.gridfs.model.GridFSUploadOptions;public class Main {public static void main(String[] args) {
// uploadFile(); downLoadFile();}/*** 下载文件*/private static void downLoadFile() {MongoClient mongoClient = new MongoClient();MongoDatabase myDataBase = mongoClient.getDatabase("gridfs");GridFSBucket gridFSBucket = GridFSBuckets.create(myDataBase);try {FileOutputStream outputStream = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\MongoDB分片下载.pptx");ObjectId id = new ObjectId("607e4f148206891288d61803"); gridFSBucket.downloadToStream(id, outputStream);outputStream.flush();outputStream.close();System.out.println("下载成功");} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** 上传文件*/
// private static void uploadFile() {
// MongoClient mongoClient = new MongoClient();
// MongoDatabase myDataBase = mongoClient.getDatabase("gridfs");
// GridFSBucket gridFSBucket = GridFSBuckets.create(myDataBase);
//
// // 上传文件
// try {
// InputStream inputStream = new FileInputStream("C:\\Users\\Administrator\\Desktop\\MongoDB分片.pptx");
// GridFSUploadOptions options = new GridFSUploadOptions()
// .chunkSizeBytes(358400)
// .metadata(new Document("type","ppt"));
// ObjectId id = gridFSBucket.uploadFromStream("MongoDB分片.pptx", inputStream, options);
// System.out.println("上传成功 "+ id.toString());
//
// } catch (FileNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//
// }}
上传文件
提前创建MongoDB分片.pptx
下载文件
要提前导好包