使用libmongoc,参考:http://mongoc.org/libmongoc/current/mongoc_gridfs_t.html

  1. #include <mongoc.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <fcntl.h>
  5.  
  6. class MongoGridFS {
  7. public:
  8. MongoGridFS(const char* db);
  9. ~MongoGridFS();
  10.  
  11. void saveFile(const char* input_file_path, const char* filename);
  12. private:
  13. mongoc_gridfs_t *gridfs;
  14. mongoc_client_t *client;
  15. };
  16.  
  17. MongoGridFS::MongoGridFS(const char* db) {
  18. assert(db != NULL);
  19. mongoc_init ();
  20. /* connect to localhost client */
  21. client = mongoc_client_new ("mongodb://127.0.0.1:27017?appname=gridfs-example");
  22. assert (client);
  23. mongoc_client_set_error_api (client, );
  24.  
  25. /* grab a gridfs handle in test prefixed by fs */
  26. bson_error_t error;
  27. gridfs = mongoc_client_get_gridfs (client, db, "fs", &error);
  28. assert (gridfs);
  29. }
  30.  
  31. void MongoGridFS::saveFile(const char* input_file_path, const char* filename) {
  32. assert(input_file_path != NULL && filename != NULL);
  33. mongoc_stream_t *stream = mongoc_stream_file_new_for_path (input_file_path, O_RDONLY, );
  34. assert (stream);
  35.  
  36. mongoc_gridfs_file_opt_t opt = {};
  37. opt.filename = filename;
  38.  
  39. /* the driver generates a file_id for you */
  40. mongoc_gridfs_file_t *file = mongoc_gridfs_create_file_from_stream (gridfs, stream, &opt);
  41. assert (file);
  42.  
  43. mongoc_gridfs_file_save (file);
  44. mongoc_gridfs_file_destroy (file);
  45. }
  46.  
  47. MongoGridFS::~MongoGridFS() {
  48. mongoc_gridfs_destroy (gridfs);
  49. mongoc_client_destroy (client);
  50. mongoc_cleanup ();
  51. }
  52.  
  53. int
  54. main (int argc, char *argv[])
  55. {
  56. MongoGridFS gridfs("test2gridfs");
  57. gridfs.saveFile("test.py", "test.py");
  58. return ;
  59. }

MongoDB C++ gridfs worked example的更多相关文章

  1. 实验mongodb使用gridfs存放一个大文件

    1.启动mongoDB 2.使用gridfs存放大文件 3.观察fs.chunks和fs.files的情况 命令 db.fs.chunks.find()查到的是一些二进制文件:

  2. MongoDB 的 GridFS 详细分析

    GridFS简介 GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件. http://www.mongodb.org/display/DOCS/GridFS http://www.m ...

  3. .NET MongoDB Driver GridFS 2.2原理及使用示例

    一.API解读 1 GridFSBucketOptions 1)public string BucketName { get; set; } 获取或设置bucket名称 2)public int Ch ...

  4. MongoDB基于GridFS管理文件

    前言 GridFS是一种将大型文件存储在MongoDB的文件规范: 数据库支持以BSON格式保存二进制对象. 但是MongoDB中BSON对象最大不能超过4MB. GridFS 规范提供了一种透明的机 ...

  5. MongoDB学习-->Gridfs分布式存储&DBRef关联查询

    mongodb自带的一个分布式文件系统 fs.files _id filename md5 size uploaddate contenttype metadata {"user_id&qu ...

  6. MongoDB GridFS 对图片进行增删改

    using MongoDB.Bson; using MongoDB.Driver; using MongoDB.Driver.Builders; using MongoDB.Driver.GridFS ...

  7. ExpressJS File Uploading – GridFS – MongoDB

    n this blog post we will see how to handle multipart data/file uploading with expressjs. Save files ...

  8. c#通过操作mongodb gridfs实现文件的数据库存储

    @(编程) 源码 using MongoDB.Driver; using MongoDB.Driver.GridFS; using System.IO; namespace Wisdombud.Mon ...

  9. MongoDB GridFS 存储文件

    使用MongoDB的GridFS方式. CSDN: https://blog.csdn.net/qq_32657967/article/details/81534259官方文档: https://do ...

随机推荐

  1. ActivityGroup中监听返回按键

    如果你想使用ActivityGroup来统一管理Activity的话,当然首先这是一种很好的方法,但是如果你想在ActivityGroup里面拦截返回按键来进行统一管理的话,直接覆写onKeyDown ...

  2. android图片上传

    package com.example.center; import java.io.ByteArrayOutputStream;import java.io.InputStream; import ...

  3. 不拖控件的asp.net编程方法——第1回

    以前写的asp.net程序基本上都用了webfrom的控件编写的,当然有个好处就是易入门.快速效率高,但感觉自己这了几个小系统,还是没学到什么东西,感觉心里没底,因为都是封装好的东西,拿来就用的,功能 ...

  4. Codeforces 86D Powerful array (莫队算法)

    题目链接 Powerful array 给你n个数,m次询问,Ks为区间内s的数目,求区间[L,R]之间所有Ks*Ks*s的和. $1<=n,m<=200000,   1<=s< ...

  5. P1364 医院设置 洛谷

    https://www.luogu.org/problem/show?pid=1364 题目描述 设有一棵二叉树,如图: 其中,圈中的数字表示结点中居民的人口.圈边上数字表示结点编号,现在要求在某个结 ...

  6. codevs——1501 二叉树最大宽度和高度

    1501 二叉树最大宽度和高度  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 白银 Silver 题解       题目描述 Description 给出一个二叉树,输出它的 ...

  7. python type()函数

    我怎么把一个变量的类型写入文件?a = 3type(a)貌似返回的是type类型,不能打印,也不能用文件的write怎么半,或者怎么转换成srt之类的? type()函数得到的是一个类型而不是字符串, ...

  8. 【Kotlin】spring boot项目中,在Idea下启动,报错@Configuration class 'BugsnagClient' may not be final.

    报错如下: Exception encountered during context initialization - cancelling refresh attempt: org.springfr ...

  9. Python基础语法08--MySql应用

    python操作mysql数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. DB-API 是一个规范. 它定义了一系列 ...

  10. BUPT复试专题—统计时间间隔(2013计院)

    题目描述 给出两个时间(24小时制),求第一个时间至少要经过多久才能到达第二个时间.给出的时间一定满足的形式,其中x和y分别代表小时和分钟.0≤x<24,0≤y<60. 输入格式 第一行为 ...