diaoyudao 发表于 2017-12-15 21:22:40

MongoDB C++ gridfs worked example

#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;
  
}
页: [1]
查看完整版本: MongoDB C++ gridfs worked example