我是mongodb
的新手并阅读有关存储文件的GridFS
但是当我在GridFS
存储文件时,我遇到了两个问题
1)当我使用GridFS
将文件写入C Driver
时,文件名与先前存储的文件相同,第一个文件将被覆盖。所以我想知道相同的文件名只能在数据库中存在一次或我做错了吗?如果是真的那么我如何在数据库系统中编写这两个文件?
2)当我将数据库中的文件写回磁盘时,文件已损坏。我在网上看到C Driver
有一些与此问题相关的错误。那么是否有人可以告诉我这个错误是否已修复?
写入DB:
mongo conn[1];
int status = mongo_client( conn, mongo_addr, MONGODB_LOCAL_PORT );
if(status != 0)
{
//Error
}
gridfs gfs[1];
gridfs_init( conn, db, collection, gfs );
gridfs_store_file( gfs, filePath, fileName, fileType, GRIDFILE_DEFAULT );
gridfs_destroy( gfs );
mongo_disconnect( conn );
mongo_destroy( conn );
此编写代码工作正常。
从DB读取:
mongo conn[1];
int status = mongo_client( conn, mongo_addr, MONGODB_LOCAL_PORT );
// Mongo_client cannot connect to DB
if(status != 0)
{
//Error
}
gridfs gfs[1];
gridfs_init( conn, db, collection, gfs );
gridfile gfile[1];
FILE *stream;
if(!gridfile_exists( gfile ))
{
//Error ("Error: No such file in DB");
}
fp = fopen( filePath, "w+" );
// Error while writing fetched file to disk
if(gridfile_write_file( gfile, fp ) == -1)
{
//Error ("Error: Could not write to disk");
}
fseek( fp, 0, SEEK_SET );
fclose( fp );
该文件已写入磁盘但已损坏。