数据库增加上传和下载文件接口
This commit is contained in:
parent
4fa2231a8b
commit
23544fbc06
|
@ -122,6 +122,28 @@ HGResult HGAPI HGPdtToolDb_ModifyPassword(HGPdtToolDbUserMgr userMgr, const HGCh
|
||||||
return userMgrImpl->ModifyPassword(oldPwd, newPwd);
|
return userMgrImpl->ModifyPassword(oldPwd, newPwd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HGResult HGAPI HGPdtToolDb_UploadFile(HGPdtToolDbUserMgr userMgr, const HGChar* tag, const HGChar* fileName)
|
||||||
|
{
|
||||||
|
if (NULL == userMgr)
|
||||||
|
{
|
||||||
|
return HGBASE_ERR_INVALIDARG;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGPdtToolDbUserMgrImpl* userMgrImpl = (HGPdtToolDbUserMgrImpl*)userMgr;
|
||||||
|
return userMgrImpl->UploadFile(tag, fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
HGResult HGAPI HGPdtToolDb_DownloadFile(HGPdtToolDbUserMgr userMgr, const HGChar* tag, const HGChar* fileName)
|
||||||
|
{
|
||||||
|
if (NULL == userMgr)
|
||||||
|
{
|
||||||
|
return HGBASE_ERR_INVALIDARG;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGPdtToolDbUserMgrImpl* userMgrImpl = (HGPdtToolDbUserMgrImpl*)userMgr;
|
||||||
|
return userMgrImpl->DownloadFile(tag, fileName);
|
||||||
|
}
|
||||||
|
|
||||||
HGResult HGAPI HGPdtToolDb_Export(HGPdtToolDbUserMgr userMgr, const HGChar* xlsPath)
|
HGResult HGAPI HGPdtToolDb_Export(HGPdtToolDbUserMgr userMgr, const HGChar* xlsPath)
|
||||||
{
|
{
|
||||||
if (NULL == userMgr)
|
if (NULL == userMgr)
|
||||||
|
|
|
@ -12,6 +12,8 @@ HGPdtToolDb_CreateUser
|
||||||
HGPdtToolDb_DestroyUser
|
HGPdtToolDb_DestroyUser
|
||||||
HGPdtToolDb_SetPassword
|
HGPdtToolDb_SetPassword
|
||||||
HGPdtToolDb_ModifyPassword
|
HGPdtToolDb_ModifyPassword
|
||||||
|
HGPdtToolDb_UploadFile
|
||||||
|
HGPdtToolDb_DownloadFile
|
||||||
HGPdtToolDb_Export
|
HGPdtToolDb_Export
|
||||||
HGPdtToolDb_GetUserConfig
|
HGPdtToolDb_GetUserConfig
|
||||||
HGPdtToolDb_SetUserConfig
|
HGPdtToolDb_SetUserConfig
|
||||||
|
|
|
@ -126,6 +126,12 @@ HGEXPORT HGResult HGAPI HGPdtToolDb_SetPassword(HGPdtToolDbUserMgr userMgr, cons
|
||||||
/* 修改本账户的密码 */
|
/* 修改本账户的密码 */
|
||||||
HGEXPORT HGResult HGAPI HGPdtToolDb_ModifyPassword(HGPdtToolDbUserMgr userMgr, const HGChar* oldPwd, const HGChar* newPwd);
|
HGEXPORT HGResult HGAPI HGPdtToolDb_ModifyPassword(HGPdtToolDbUserMgr userMgr, const HGChar* oldPwd, const HGChar* newPwd);
|
||||||
|
|
||||||
|
/* 上传/更新文件,需要管理员账户才能调用 */
|
||||||
|
HGEXPORT HGResult HGAPI HGPdtToolDb_UploadFile(HGPdtToolDbUserMgr userMgr, const HGChar *tag, const HGChar *fileName);
|
||||||
|
|
||||||
|
/* 下载文件 */
|
||||||
|
HGEXPORT HGResult HGAPI HGPdtToolDb_DownloadFile(HGPdtToolDbUserMgr userMgr, const HGChar* tag, const HGChar* fileName);
|
||||||
|
|
||||||
/* 导出所有设备测试信息到XLS文件 */
|
/* 导出所有设备测试信息到XLS文件 */
|
||||||
HGEXPORT HGResult HGAPI HGPdtToolDb_Export(HGPdtToolDbUserMgr userMgr, const HGChar *xlsPath);
|
HGEXPORT HGResult HGAPI HGPdtToolDb_Export(HGPdtToolDbUserMgr userMgr, const HGChar *xlsPath);
|
||||||
|
|
||||||
|
|
|
@ -151,7 +151,8 @@ HGResult HGPdtToolDbUserMgrImpl::Create(const HGChar* host, HGUShort port, const
|
||||||
return HGPDTTOOLDB_ERR_WRONG_PASSWORD;
|
return HGPDTTOOLDB_ERR_WRONG_PASSWORD;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 != CreateMainTestTable(sql) || 0 != CreateInitInspTestTable(sql) || 0 != CreateInitInspDescTable(sql)
|
if (0 != CreateFileTable(sql) || 0 != CreateMainTestTable(sql)
|
||||||
|
|| 0 != CreateInitInspTestTable(sql) || 0 != CreateInitInspDescTable(sql)
|
||||||
|| 0 != CreateImgInspTestTable(sql) || 0 != CreateImgInspDescTable(sql)
|
|| 0 != CreateImgInspTestTable(sql) || 0 != CreateImgInspDescTable(sql)
|
||||||
|| 0 != CreatePreInspTestTable(sql) || 0 != CreatePreInspDescTable(sql))
|
|| 0 != CreatePreInspTestTable(sql) || 0 != CreatePreInspDescTable(sql))
|
||||||
{
|
{
|
||||||
|
@ -445,6 +446,172 @@ HGResult HGPdtToolDbUserMgrImpl::ModifyPassword(const HGChar* oldPwd, const HGCh
|
||||||
return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL;
|
return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HGResult HGPdtToolDbUserMgrImpl::UploadFile(const HGChar* tag, const HGChar* fileName)
|
||||||
|
{
|
||||||
|
if (NULL == m_sql)
|
||||||
|
{
|
||||||
|
return HGBASE_ERR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (NULL == tag || 0 == *tag || NULL == fileName || 0 == *fileName)
|
||||||
|
{
|
||||||
|
return HGBASE_ERR_INVALIDARG;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGUInt userType = 0;
|
||||||
|
GetUserType(&userType);
|
||||||
|
if (HGPDTTOOLDB_USERTYPE_ROOT != userType)
|
||||||
|
{
|
||||||
|
return HGBASE_ERR_ACCESSDENIED;
|
||||||
|
}
|
||||||
|
|
||||||
|
FILE* file = fopen(fileName, "rb");
|
||||||
|
if (NULL == file)
|
||||||
|
{
|
||||||
|
return HGBASE_ERR_FILENOTEXIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
fseek(file, 0, SEEK_END);
|
||||||
|
unsigned long fileSize = ftell(file);
|
||||||
|
fseek(file, 0, SEEK_SET);
|
||||||
|
if (fileSize <= 0)
|
||||||
|
{
|
||||||
|
fclose(file);
|
||||||
|
return HGBASE_ERR_FILEERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
void* fileData = malloc(fileSize);
|
||||||
|
if (NULL == fileData)
|
||||||
|
{
|
||||||
|
fclose(file);
|
||||||
|
return HGBASE_ERR_OUTOFMEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fileSize != fread(fileData, 1, fileSize, file))
|
||||||
|
{
|
||||||
|
free(fileData);
|
||||||
|
fclose(file);
|
||||||
|
return HGBASE_ERR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGResult res = HGBASE_ERR_FAIL;
|
||||||
|
MYSQL_STMT *stmt = mysql_stmt_init(m_sql);
|
||||||
|
assert(NULL != stmt);
|
||||||
|
|
||||||
|
char sqlCmd[1024] = {0};
|
||||||
|
sprintf(sqlCmd, "insert into file_list (tag, file_data) values ('%s', ?);", tag);
|
||||||
|
int ret = mysql_stmt_prepare(stmt, sqlCmd, strlen(sqlCmd));
|
||||||
|
assert(0 == ret);
|
||||||
|
|
||||||
|
MYSQL_BIND bnd = {0};
|
||||||
|
bnd.buffer_type = MYSQL_TYPE_BLOB;
|
||||||
|
bnd.buffer = fileData;
|
||||||
|
bnd.buffer_length = fileSize;
|
||||||
|
ret = mysql_stmt_bind_param(stmt, &bnd);
|
||||||
|
assert(0 == ret);
|
||||||
|
|
||||||
|
ret = mysql_stmt_execute(stmt);
|
||||||
|
if (0 == ret)
|
||||||
|
{
|
||||||
|
res = HGBASE_ERR_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (1062 == mysql_stmt_errno(stmt))
|
||||||
|
{
|
||||||
|
sprintf(sqlCmd, "update file_list set file_data = ? where tag = '%s';", tag);
|
||||||
|
ret = mysql_stmt_prepare(stmt, sqlCmd, strlen(sqlCmd));
|
||||||
|
assert(0 == ret);
|
||||||
|
|
||||||
|
MYSQL_BIND bnd = {0};
|
||||||
|
bnd.buffer_type = MYSQL_TYPE_BLOB;
|
||||||
|
bnd.buffer = fileData;
|
||||||
|
bnd.buffer_length = fileSize;
|
||||||
|
ret = mysql_stmt_bind_param(stmt, &bnd);
|
||||||
|
assert(0 == ret);
|
||||||
|
|
||||||
|
ret = mysql_stmt_execute(stmt);
|
||||||
|
if (0 == ret)
|
||||||
|
{
|
||||||
|
res = HGBASE_ERR_OK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mysql_stmt_close(stmt);
|
||||||
|
free(fileData);
|
||||||
|
fclose(file);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGResult HGPdtToolDbUserMgrImpl::DownloadFile(const HGChar* tag, const HGChar* fileName)
|
||||||
|
{
|
||||||
|
if (NULL == m_sql)
|
||||||
|
{
|
||||||
|
return HGBASE_ERR_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (NULL == tag || 0 == *tag || NULL == fileName || 0 == *fileName)
|
||||||
|
{
|
||||||
|
return HGBASE_ERR_INVALIDARG;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGResult res = HGBASE_ERR_FAIL;
|
||||||
|
MYSQL_STMT* stmt = mysql_stmt_init(m_sql);
|
||||||
|
assert(NULL != stmt);
|
||||||
|
|
||||||
|
char sqlCmd[1024] = {0};
|
||||||
|
sprintf(sqlCmd, "select file_data from file_list where tag = '%s';", tag);
|
||||||
|
int ret = mysql_stmt_prepare(stmt, sqlCmd, strlen(sqlCmd));
|
||||||
|
assert(0 == ret);
|
||||||
|
|
||||||
|
unsigned long readLength = 0;
|
||||||
|
MYSQL_BIND bnd = {0};
|
||||||
|
bnd.buffer_type = MYSQL_TYPE_BLOB;
|
||||||
|
bnd.length = &readLength;
|
||||||
|
ret = mysql_stmt_bind_result(stmt, &bnd);
|
||||||
|
assert(0 == ret);
|
||||||
|
|
||||||
|
ret = mysql_stmt_execute(stmt);
|
||||||
|
assert(0 == ret);
|
||||||
|
mysql_stmt_fetch(stmt);
|
||||||
|
|
||||||
|
if (readLength > 0)
|
||||||
|
{
|
||||||
|
bnd.buffer = malloc(readLength);
|
||||||
|
if (NULL != bnd.buffer)
|
||||||
|
{
|
||||||
|
bnd.buffer_length = readLength;
|
||||||
|
ret = mysql_stmt_fetch_column(stmt, &bnd, 0, 0);
|
||||||
|
assert(0 == ret);
|
||||||
|
|
||||||
|
FILE* file = fopen(fileName, "wb");
|
||||||
|
if (NULL != file)
|
||||||
|
{
|
||||||
|
if (readLength == fwrite(bnd.buffer, 1, bnd.buffer_length, file))
|
||||||
|
{
|
||||||
|
ret = HGBASE_ERR_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(file);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
res = HGBASE_ERR_ACCESSDENIED;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(bnd.buffer);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
res = HGBASE_ERR_OUTOFMEMORY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mysql_stmt_close(stmt);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath)
|
HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath)
|
||||||
{
|
{
|
||||||
if (NULL == m_sql)
|
if (NULL == m_sql)
|
||||||
|
@ -786,6 +953,16 @@ std::string HGPdtToolDbUserMgrImpl::GetAuthString(MYSQL* sql, const HGChar* pwd)
|
||||||
return authString;
|
return authString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int HGPdtToolDbUserMgrImpl::CreateFileTable(MYSQL* sql)
|
||||||
|
{
|
||||||
|
assert(NULL != sql);
|
||||||
|
|
||||||
|
std::string cmd = "create table if not exists file_list (tag varchar(20) not null primary key";
|
||||||
|
cmd += ", file_data blob";
|
||||||
|
cmd += ");";
|
||||||
|
return mysql_query(sql, cmd.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
int HGPdtToolDbUserMgrImpl::CreateMainTestTable(MYSQL* sql)
|
int HGPdtToolDbUserMgrImpl::CreateMainTestTable(MYSQL* sql)
|
||||||
{
|
{
|
||||||
assert(NULL != sql);
|
assert(NULL != sql);
|
||||||
|
|
|
@ -24,6 +24,8 @@ public:
|
||||||
HGResult DestroyUser(const HGChar* userName);
|
HGResult DestroyUser(const HGChar* userName);
|
||||||
HGResult SetPassword(const HGChar* userName, const HGChar* pwd);
|
HGResult SetPassword(const HGChar* userName, const HGChar* pwd);
|
||||||
HGResult ModifyPassword(const HGChar* oldPwd, const HGChar* newPwd);
|
HGResult ModifyPassword(const HGChar* oldPwd, const HGChar* newPwd);
|
||||||
|
HGResult UploadFile(const HGChar* tag, const HGChar* fileName);
|
||||||
|
HGResult DownloadFile(const HGChar* tag, const HGChar* fileName);
|
||||||
HGResult Export(const HGChar* xlsPath);
|
HGResult Export(const HGChar* xlsPath);
|
||||||
HGResult GetConfig(const HGChar *key, HGChar *value, HGUInt maxLen);
|
HGResult GetConfig(const HGChar *key, HGChar *value, HGUInt maxLen);
|
||||||
HGResult SetConfig(const HGChar* key, const HGChar *value);
|
HGResult SetConfig(const HGChar* key, const HGChar *value);
|
||||||
|
@ -36,6 +38,7 @@ private:
|
||||||
static std::string GetPassword(MYSQL* sql, const HGChar* userName);
|
static std::string GetPassword(MYSQL* sql, const HGChar* userName);
|
||||||
static std::string GetAuthString(MYSQL* sql, const HGChar* pwd);
|
static std::string GetAuthString(MYSQL* sql, const HGChar* pwd);
|
||||||
|
|
||||||
|
int CreateFileTable(MYSQL* sql);
|
||||||
int CreateMainTestTable(MYSQL *sql);
|
int CreateMainTestTable(MYSQL *sql);
|
||||||
int CreateInitInspTestTable(MYSQL* sql);
|
int CreateInitInspTestTable(MYSQL* sql);
|
||||||
int CreateInitInspDescTable(MYSQL* sql);
|
int CreateInitInspDescTable(MYSQL* sql);
|
||||||
|
|
|
@ -8,15 +8,9 @@ int main()
|
||||||
HGPdtToolDb_CreateUserMgr("127.0.0.1", 3306, "root", "123456", &userMgr);
|
HGPdtToolDb_CreateUserMgr("127.0.0.1", 3306, "root", "123456", &userMgr);
|
||||||
if (NULL != userMgr)
|
if (NULL != userMgr)
|
||||||
{
|
{
|
||||||
HGChar* name[256];
|
HGPdtToolDb_UploadFile(userMgr, "G100", "D:\\config.json");
|
||||||
HGUInt count;
|
|
||||||
HGPdtToolDb_GetUserList(userMgr, name, 256, &count);
|
|
||||||
|
|
||||||
HGPdtToolDb_DestroyUser(userMgr, "kkk");
|
HGPdtToolDb_DownloadFile(userMgr, "G100", "D:\\123.txt");
|
||||||
|
|
||||||
//HGPdtToolDb_CreateUser(userMgr, "huago", "123456");
|
|
||||||
//HGPdtToolDb_ModifyPassword(userMgr, "1234", "123456");
|
|
||||||
//HGPdtToolDb_SetPassword(userMgr, "huago", "654321");
|
|
||||||
|
|
||||||
HGPdtToolDbDevice device = NULL;
|
HGPdtToolDbDevice device = NULL;
|
||||||
HGPdtToolDb_OpenDevice(userMgr, "G123456", &device);
|
HGPdtToolDb_OpenDevice(userMgr, "G123456", &device);
|
||||||
|
|
Loading…
Reference in New Issue