zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    修改IIS下默认的ASP.NET版本。
    smo算法
    支持向量机通俗导论
    二次规划
    交叉熵
    机器学习中的维数灾难
    矩阵与线性变换
    l2正则化
    Matlab 的reshape函数
    matlab 等值线函数 contour
  • 原文地址:https://www.cnblogs.com/bonelee/p/6568211.html
Copyright © 2011-2022 走看看