@@ -24,10 +24,12 @@ XHTHREAD CALLBACK XEngine_Center_HTTPThread(LPVOID lParam)
2424 for (int j = 0 ; j < ppSt_PKTClient[i]->nPktCount ; j++)
2525 {
2626 int nMsgLen = 10240 ;
27+ int nHdrCount = 0 ;
28+ CHAR** ppszListHdr = NULL ;
2729 // 获得指定上传客户端触发信息
28- if (RfcComponents_HttpServer_GetClientEx (xhCenterHttp, ppSt_PKTClient[i]->tszClientAddr , tszMsgBuffer, &nMsgLen, &st_HTTPParam))
30+ if (RfcComponents_HttpServer_GetClientEx (xhCenterHttp, ppSt_PKTClient[i]->tszClientAddr , tszMsgBuffer, &nMsgLen, &st_HTTPParam, &ppszListHdr, &nHdrCount ))
2931 {
30- XEngine_Task_HttpCenter (ppSt_PKTClient[i]->tszClientAddr , tszMsgBuffer, nMsgLen, &st_HTTPParam);
32+ XEngine_Task_HttpCenter (ppSt_PKTClient[i]->tszClientAddr , tszMsgBuffer, nMsgLen, &st_HTTPParam, ppszListHdr, nHdrCount );
3133 }
3234 }
3335 }
@@ -64,7 +66,7 @@ BOOL XEngine_Task_HttpCenter_APIList(LPCTSTR lpszUrlName, TCHAR* ptszAPIVersion,
6466 _tcscpy (ptszAPIName, ptszTokStr);
6567 return TRUE ;
6668}
67- BOOL XEngine_Task_HttpCenter (LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam)
69+ BOOL XEngine_Task_HttpCenter (LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, TCHAR** pptszListHdr, int nHdrCount )
6870{
6971 int nSDLen = 2048 ;
7072 TCHAR tszSDBuffer[2048 ];
@@ -101,11 +103,13 @@ BOOL XEngine_Task_HttpCenter(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int
101103 return FALSE ;
102104 }
103105
106+ LPCTSTR lpszEvent = _T (" Event" );
104107 LPCTSTR lpszQuery = _T (" query" );
108+ LPCTSTR lpszEventUPFile = _T (" UPFile" );
105109 LPCTSTR lpszQueryFile = _T (" file" );
106- if (0 == _tcsncmp (lpszQuery, tszAPIMethod, _tcslen (lpszQuery)))
110+ if (0 == _tcsnicmp (lpszQuery, tszAPIMethod, _tcslen (lpszQuery)))
107111 {
108- if (0 == _tcsncmp (lpszQueryFile, tszAPIName, _tcslen (lpszQueryFile)))
112+ if (0 == _tcsnicmp (lpszQueryFile, tszAPIName, _tcslen (lpszQueryFile)))
109113 {
110114 int nMsgLen = 10240 ;
111115 TCHAR tszFileName[MAX_PATH];
@@ -135,5 +139,65 @@ BOOL XEngine_Task_HttpCenter(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int
135139 BaseLib_OperatorMemory_Free ((XPPPMEM)&ppSt_ListFile, nListCount);
136140 }
137141 }
142+ else if (0 == _tcsnicmp (lpszEvent, tszAPIMethod, _tcslen (lpszEvent)))
143+ {
144+ if (0 == _tcsnicmp (lpszEventUPFile, tszAPIName, _tcslen (lpszEventUPFile)))
145+ {
146+ LPCTSTR lpszContentType = _T (" Content-Type" );
147+ LPCTSTR lpszBoundaryStr = _T (" boundary=" );
148+ TCHAR tszContentStr[MAX_PATH];
149+ TCHAR tszBoundarTmp[MAX_PATH];
150+ TCHAR tszBoundarStr[MAX_PATH];
151+ TCHAR tszFileDir[MAX_PATH];
152+ XSTORAGECORE_DBFILE st_DBFile;
153+
154+ memset (tszContentStr, ' \0 ' , MAX_PATH);
155+ memset (tszBoundarTmp, ' \0 ' , MAX_PATH);
156+ memset (tszBoundarStr, ' \0 ' , MAX_PATH);
157+ memset (tszContentStr, ' \0 ' , MAX_PATH);
158+ memset (tszFileDir, ' \0 ' , MAX_PATH);
159+ memset (&st_DBFile, ' \0 ' , sizeof (XSTORAGECORE_DBFILE));
160+
161+ if (!RfcComponents_HttpHelp_GetField (&pptszListHdr, nHdrCount, lpszContentType, tszContentStr))
162+ {
163+ st_HDRParam.bIsClose = TRUE ;
164+ st_HDRParam.nHttpCode = 400 ;
165+
166+ RfcComponents_HttpServer_SendMsgEx (xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
167+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
168+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T (" 业务客户端:%s,请求的HTTP头内容不正确,没有类型字段" ), lpszClientAddr);
169+ return FALSE ;
170+ }
171+ if (!BaseLib_OperatorString_FromStrGetKeyValue (tszContentStr, lpszBoundaryStr, NULL , tszBoundarTmp))
172+ {
173+ st_HDRParam.bIsClose = TRUE ;
174+ st_HDRParam.nHttpCode = 400 ;
175+
176+ RfcComponents_HttpServer_SendMsgEx (xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
177+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
178+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T (" 业务客户端:%s,请求的HTTP头内容不正确,没有Boundary值" ), lpszClientAddr);
179+ return FALSE ;
180+ }
181+ _stprintf (tszBoundarStr, _T (" --%s\r\n " ), tszBoundarTmp);
182+
183+ XStorageProtocol_Core_REQUPEvent (lpszMsgBuffer, tszBoundarStr, st_DBFile.st_ProtocolFile .tszFileName , tszFileDir, st_DBFile.st_ProtocolFile .tszFileHash , &st_DBFile.st_ProtocolFile .nFileSize );
184+ _tcscpy (st_DBFile.st_ProtocolFile .tszFilePath , st_ServiceCfg.st_XStorage .tszFileDir );
185+
186+ if (XStorageSQL_File_FileInsert (&st_DBFile))
187+ {
188+ st_HDRParam.nHttpCode = 200 ;
189+ RfcComponents_HttpServer_SendMsgEx (xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
190+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
191+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T (" 业务客户端:%s,处理NGINX代理上传文件成功,文件名:%s,大小:%lld" ), lpszClientAddr, tszFileDir, st_DBFile.st_ProtocolFile .nFileSize );
192+ }
193+ else
194+ {
195+ st_HDRParam.nHttpCode = 403 ;
196+ RfcComponents_HttpServer_SendMsgEx (xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
197+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
198+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T (" 业务客户端:%s,处理NGINX代理上传文件失败,插入数据库失败:%s,错误:%lX" ), lpszClientAddr, tszFileDir, XStorageDB_GetLastError ());
199+ }
200+ }
201+ }
138202 return TRUE ;
139203}
0 commit comments