GridFS相同的文件名使用C驱动程序覆盖文件

时间:2014-01-03 00:37:56

标签: c mongodb gridfs

我是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 );

该文件已写入磁盘但已损坏。

0 个答案:

没有答案