Skip to content

Commit 13d4eb8

Browse files
committed
modify:Incomplete uploads also return information
modify:upload supports specifying bucket fixed:the len field of the upload result json is incorrect
1 parent 83d938d commit 13d4eb8

File tree

2 files changed

+52
-11
lines changed

2 files changed

+52
-11
lines changed

XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,27 @@ BOOL CAPIHelp_Distributed::APIHelp_Distributed_UPStorage(LPCTSTR lpszMsgBuffer,
322322
return FALSE;
323323
}
324324
}
325+
else if (5 == nMode)
326+
{
327+
BOOL bFound = FALSE;
328+
//上传专用,由用户指定
329+
list<XENGINE_STORAGEBUCKET>::const_iterator stl_ListIterator = pStl_ListBucket->begin();
330+
for (; stl_ListIterator != pStl_ListBucket->end(); stl_ListIterator++)
331+
{
332+
if (0 == _tcsnicmp(pSt_StorageBucket->tszBuckKey, stl_ListIterator->tszBuckKey, _tcslen(pSt_StorageBucket->tszBuckKey)))
333+
{
334+
bFound = TRUE;
335+
*pSt_StorageBucket = *stl_ListIterator;
336+
break;
337+
}
338+
}
339+
if (!bFound)
340+
{
341+
APIHelp_IsErrorOccur = TRUE;
342+
APIHelp_dwErrorCode = ERROR_STORAGE_MODULE_APIHELP_NOTFOUND;
343+
return FALSE;
344+
}
345+
}
325346
else
326347
{
327348
int nLastLevel = 99999;

XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -139,22 +139,41 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
139139
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("上传客户端:%s,请求的文件被要求重定向到:%s%s"), lpszClientAddr, tszStorageAddr, pSt_HTTPParam->tszHttpUri);
140140
return TRUE;
141141
}
142-
143142
int nRVMode = 0;
144143
int nRVCount = 0;
145144
int nHDSize = 0;
145+
TCHAR tszStorageKey[MAX_PATH];
146146
XENGINE_STORAGEBUCKET st_StorageBucket;
147+
LPCTSTR lpszStorageKey = _T("StorageKey");
148+
149+
memset(tszStorageKey, '\0', MAX_PATH);
147150
memset(&st_StorageBucket, '\0', sizeof(XENGINE_STORAGEBUCKET));
151+
//是否制定了bucket
152+
if (RfcComponents_HttpHelp_GetField(&pptszListHdr, nHdrCount, lpszStorageKey, st_StorageBucket.tszBuckKey))
153+
{
154+
if (!APIHelp_Distributed_UPStorage(pSt_HTTPParam->tszHttpUri, st_LoadbalanceCfg.st_LoadBalance.pStl_ListBucket, &st_StorageBucket, 5))
155+
{
156+
st_HDRParam.bIsClose = TRUE;
157+
st_HDRParam.nHttpCode = 413;
148158

149-
if (!APIHelp_Distributed_UPStorage(pSt_HTTPParam->tszHttpUri, st_LoadbalanceCfg.st_LoadBalance.pStl_ListBucket, &st_StorageBucket, st_LoadbalanceCfg.st_LBLocation.nUPLoadMode))
159+
RfcComponents_HttpServer_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
160+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER);
161+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("上传客户端:%s,请求上传文件失败,可能BUCKET:% 不正确,错误:%lX"), lpszClientAddr, pSt_HTTPParam->tszHttpUri, APIHelp_GetLastError());
162+
return FALSE;
163+
}
164+
}
165+
else
150166
{
151-
st_HDRParam.bIsClose = TRUE;
152-
st_HDRParam.nHttpCode = 413;
167+
if (!APIHelp_Distributed_UPStorage(pSt_HTTPParam->tszHttpUri, st_LoadbalanceCfg.st_LoadBalance.pStl_ListBucket, &st_StorageBucket, st_LoadbalanceCfg.st_LBLocation.nUPLoadMode))
168+
{
169+
st_HDRParam.bIsClose = TRUE;
170+
st_HDRParam.nHttpCode = 413;
153171

154-
RfcComponents_HttpServer_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
155-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER);
156-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("上传客户端:%s,请求上传文件失败,可能BUCKET:% 不正确,错误:%lX"), lpszClientAddr, pSt_HTTPParam->tszHttpUri, APIHelp_GetLastError());
157-
return FALSE;
172+
RfcComponents_HttpServer_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
173+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER);
174+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("上传客户端:%s,请求上传文件失败,可能BUCKET:% 不正确,错误:%lX"), lpszClientAddr, pSt_HTTPParam->tszHttpUri, APIHelp_GetLastError());
175+
return FALSE;
176+
}
158177
}
159178
_stprintf(tszFileDir, _T("%s%s"), st_StorageBucket.tszFilePath, pSt_HTTPParam->tszHttpUri);
160179

@@ -218,7 +237,8 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
218237
{
219238
st_HDRParam.bIsClose = TRUE;
220239
st_HDRParam.nHttpCode = 200;
221-
RfcComponents_HttpServer_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
240+
Protocol_StoragePacket_UPDown(tszPassNotify, &nPLen, st_StorageInfo.tszBuckKey, st_StorageInfo.tszFileDir, st_StorageInfo.tszClientAddr, st_StorageInfo.ullRWLen, FALSE);
241+
RfcComponents_HttpServer_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszPassNotify, nPLen);
222242
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER);
223243
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _T("上传客户端:%s,请求上传文件成功,文件名:%s,总大小:%lld,写入大小:%lld,文件不完整,需要等待断点续传完毕"), lpszClientAddr, tszFileDir, st_StorageInfo.ullCount, st_StorageInfo.ullFSize);
224244
return TRUE;
@@ -232,6 +252,7 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
232252

233253
_tcscpy(st_ProtocolFile.st_ProtocolFile.tszFilePath, st_StorageBucket.tszFilePath);
234254
_tcscpy(st_ProtocolFile.st_ProtocolFile.tszFileName, pSt_HTTPParam->tszHttpUri + 1);
255+
_tcscpy(st_ProtocolFile.tszBuckKey, st_StorageBucket.tszBuckKey);
235256
st_ProtocolFile.st_ProtocolFile.nFileSize = st_StorageInfo.ullFSize;
236257

237258
OPenSsl_Api_Digest(tszFileDir, tszHashStr, &nHashLen, TRUE, st_ServiceCfg.st_XStorage.nHashMode);
@@ -257,8 +278,7 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
257278
}
258279

259280
BOOL bRet = TRUE;
260-
_tcscpy(st_ProtocolFile.tszBuckKey, st_StorageBucket.tszBuckKey);
261-
Protocol_StoragePacket_UPDown(tszPassNotify, &nPLen, st_StorageInfo.tszBuckKey, st_StorageInfo.tszFileDir, st_StorageInfo.tszClientAddr, st_StorageInfo.ullRWCount, FALSE, st_ProtocolFile.st_ProtocolFile.tszFileHash);
281+
Protocol_StoragePacket_UPDown(tszPassNotify, &nPLen, st_StorageInfo.tszBuckKey, st_StorageInfo.tszFileDir, st_StorageInfo.tszClientAddr, st_StorageInfo.ullCount, FALSE, st_ProtocolFile.st_ProtocolFile.tszFileHash);
262282
if (st_ServiceCfg.st_XSql.bEnable)
263283
{
264284
if (Database_File_FileInsert(&st_ProtocolFile))

0 commit comments

Comments
 (0)