@@ -52,13 +52,14 @@ bool XEngine_Task_HttpCenter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
5252
5353 LPCXSTR lpszMethodPost = _X (" POST" );
5454 LPCXSTR lpszMethodGet = _X (" GET" );
55+ LPCXSTR lpszMethodHead = _X (" HEAD" );
5556
5657 XCHAR** pptszUrlList;
5758 XCHAR tszUrlName[128 ];
5859 int nUrlCount = 0 ;
5960 // 得到URL参数个数
6061 HttpProtocol_ServerHelp_GetParament (pSt_HTTPParam->tszHttpUri , &pptszUrlList, &nUrlCount, tszUrlName);
61- if (nUrlCount < 1 )
62+ if (nUrlCount < 1 && ( 0 != _tcsxncmp (lpszMethodHead, pSt_HTTPParam-> tszHttpMethod , _tcsxlen (lpszMethodHead))) )
6263 {
6364 st_HDRParam.nHttpCode = 400 ;
6465 HttpProtocol_Server_SendMsgEx (xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
@@ -207,6 +208,32 @@ bool XEngine_Task_HttpCenter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
207208 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" 业务客户端:%s,请求GET心跳方法成功" ), lpszClientAddr);
208209 }
209210 }
211+ else if (0 == _tcsxncmp (lpszMethodHead, pSt_HTTPParam->tszHttpMethod , _tcsxlen (lpszMethodHead)))
212+ {
213+ // 获得文件大小
214+ XCHAR tszFileExt[64 ] = {};
215+ XCHAR tszFileHdr[XPATH_MIN] = {};
216+ XCHAR tszFilePath[XPATH_MAX] = {};
217+ SYSTEMAPI_FILE_ATTR st_FileAttr = {};
218+
219+ _xstprintf (tszFilePath, _X (" .%s" ), pSt_HTTPParam->tszHttpUri );
220+ if (0 != _xtaccess (tszFilePath, 0 ))
221+ {
222+ st_HDRParam.nHttpCode = 404 ;
223+ Protocol_StoragePacket_HTTPPacket (tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_NOTFOUND, " file not found" );
224+ HttpProtocol_Server_SendMsgEx (xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen);
225+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
226+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" 业务客户端:%s,请求文件大小失败,文件:%s 不存在" ), lpszClientAddr, pSt_HTTPParam->tszHttpUri );
227+ return false ;
228+ }
229+ SystemApi_File_GetFileAttr (tszFilePath, &st_FileAttr);
230+ BaseLib_String_GetFileAndPath (tszFilePath, NULL , NULL , NULL , tszFileExt);
231+ _xstprintf (tszFileHdr, _X (" Content-Length: %lld\r\n " ), st_FileAttr.nFileSize );
232+
233+ HttpProtocol_Server_SendMsgEx (xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL , 0 , tszFileHdr);
234+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
235+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" 业务客户端:%s,请求获取文件:%s 大小:%lld 成功" ), lpszClientAddr, tszFilePath, st_FileAttr.nFileSize );
236+ }
210237 else
211238 {
212239 st_HDRParam.bIsClose = true ;
0 commit comments