MongoDB C++ gridfs worked example
使用libmongoc,参考:http://mongoc.org/libmongoc/current/mongoc_gridfs_t.html
#include <mongoc.h> #include <stdio.h> #include <stdlib.h> #include <fcntl.h> class MongoGridFS { public: MongoGridFS(const char* db); ~MongoGridFS(); void saveFile(const char* input_file_path, const char* filename); private: mongoc_gridfs_t *gridfs; mongoc_client_t *client; }; MongoGridFS::MongoGridFS(const char* db) { assert(db != NULL); mongoc_init (); /* connect to localhost client */ client = mongoc_client_new ("mongodb://127.0.0.1:27017?appname=gridfs-example"); assert (client); mongoc_client_set_error_api (client, 2); /* grab a gridfs handle in test prefixed by fs */ bson_error_t error; gridfs = mongoc_client_get_gridfs (client, db, "fs", &error); assert (gridfs); } void MongoGridFS::saveFile(const char* input_file_path, const char* filename) { assert(input_file_path != NULL && filename != NULL); mongoc_stream_t *stream = mongoc_stream_file_new_for_path (input_file_path, O_RDONLY, 0); assert (stream); mongoc_gridfs_file_opt_t opt = {0}; opt.filename = filename; /* the driver generates a file_id for you */ mongoc_gridfs_file_t *file = mongoc_gridfs_create_file_from_stream (gridfs, stream, &opt); assert (file); mongoc_gridfs_file_save (file); mongoc_gridfs_file_destroy (file); } MongoGridFS::~MongoGridFS() { mongoc_gridfs_destroy (gridfs); mongoc_client_destroy (client); mongoc_cleanup (); } int main (int argc, char *argv[]) { MongoGridFS gridfs("test2gridfs"); gridfs.saveFile("test.py", "test.py"); return 0; }
标签:
mongodb
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」