//gridfs_to_file.cpp
#include <iostream>
#include <vector>
#include <fstream>
#include <boost/algorithm/string.hpp>
#include <mongo/client/dbclient.h>
#include <mongo/client/gridfs.h>
// g++ gridfs_to_file.cpp -lmongoclient -lboost_thread -lboost_filesystem -o gridfs_to_file
using namespace std;
using namespace mongo;
int main(int argc, const char **argv) {
const char *gridFileName = "";
std::fstream out;
if (argc != 3) {
cerr << "Usage " << argv[0] << " gridfs_file local_file" << endl;
return -12;
}
out.open(argv[2], ios::out);
if ( !out.is_open()) {
cerr << "Can't open " << argv[2] << endl;
return -2;
}
gridFileName = argv[1];
DBClientConnection c;
c.connect("localhost");
cout << "connected ok" <<endl;
GridFS gfs = GridFS(c, "test", "testcpp");
GridFile gf = gfs.findFile(gridFileName);
if (true != gf.exists()) {
cerr << "There is no file like " << argv[1] << endl;
return -2;
}
gf.write(out);
out.close();
return 0;
}
This program reads file from local file system and send it to gridfs.
#include <mongo/client/dbclient.h>
#include <mongo/client/gridfs.h>
// g++ local_to_gridfs.cpp -lmongoclient -lboost_thread -lboost_filesystem -o local_to_gridfs
using namespace std;
using namespace mongo;
int main(int argc, const char **argv) {
char *data;
int len;
if (argc != 3) {
cerr << "Usage " << argv[0] << " localFile remoteName " << endl;
return -12;
}
fstream in(argv[1], ios::in|ios::binary|ios::ate);
DBClientConnection c;
c.connect("localhost");
cout << "connected ok" <<endl;
GridFS gfs = GridFS(c, "test", "testcpp");
if ( in.is_open() ) {
len = in.tellg();
in.seekg( 0, ios::beg);
data = new char[len];
in.read(data, len);
}
//storing file
gfs.storeFile(data, len, argv[2], "text/plain");
delete [] data;
cout << "file stored to gridfs" << endl;
return 0;
}
No comments:
Post a Comment