Skip to content

Commit 67f7b08

Browse files
committed
now is Separate management task codes
1 parent d6874ed commit 67f7b08

13 files changed

+284
-181
lines changed

XEngine_Source/XEngine_StorageApp.sln

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XStorage_SQLPacket", "XEngi
1515
EndProject
1616
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XStorage_Protocol", "XEngine_StorageComponents\XStorage_Protocol\XStorage_Protocol.vcxproj", "{142A5A99-6A38-4FB5-8394-54B8FF5D0624}"
1717
EndProject
18+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XEngine_P2XPComponents", "XEngine_P2XPComponents", "{BCD8CA0D-FE34-4A30-B716-F9FABA9AA74B}"
19+
EndProject
20+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_P2XPProtocol", "XEngine_P2XPComponents\XEngine_P2XPProtocol\XEngine_P2XPProtocol.vcxproj", "{27C23732-90E5-41DB-89E2-FB69FBA66EC2}"
21+
EndProject
1822
Global
1923
GlobalSection(SolutionConfigurationPlatforms) = preSolution
2024
Debug|x64 = Debug|x64
@@ -63,13 +67,22 @@ Global
6367
{142A5A99-6A38-4FB5-8394-54B8FF5D0624}.Release|x64.Build.0 = Release|x64
6468
{142A5A99-6A38-4FB5-8394-54B8FF5D0624}.Release|x86.ActiveCfg = Release|Win32
6569
{142A5A99-6A38-4FB5-8394-54B8FF5D0624}.Release|x86.Build.0 = Release|Win32
70+
{27C23732-90E5-41DB-89E2-FB69FBA66EC2}.Debug|x64.ActiveCfg = Debug|x64
71+
{27C23732-90E5-41DB-89E2-FB69FBA66EC2}.Debug|x64.Build.0 = Debug|x64
72+
{27C23732-90E5-41DB-89E2-FB69FBA66EC2}.Debug|x86.ActiveCfg = Debug|Win32
73+
{27C23732-90E5-41DB-89E2-FB69FBA66EC2}.Debug|x86.Build.0 = Debug|Win32
74+
{27C23732-90E5-41DB-89E2-FB69FBA66EC2}.Release|x64.ActiveCfg = Release|x64
75+
{27C23732-90E5-41DB-89E2-FB69FBA66EC2}.Release|x64.Build.0 = Release|x64
76+
{27C23732-90E5-41DB-89E2-FB69FBA66EC2}.Release|x86.ActiveCfg = Release|Win32
77+
{27C23732-90E5-41DB-89E2-FB69FBA66EC2}.Release|x86.Build.0 = Release|Win32
6678
EndGlobalSection
6779
GlobalSection(SolutionProperties) = preSolution
6880
HideSolutionNode = FALSE
6981
EndGlobalSection
7082
GlobalSection(NestedProjects) = preSolution
7183
{CAEF9BAE-38FB-407C-8C83-87A97B3647D3} = {4FF9D547-65B4-4B26-923C-4207BAA3AACB}
7284
{142A5A99-6A38-4FB5-8394-54B8FF5D0624} = {4FF9D547-65B4-4B26-923C-4207BAA3AACB}
85+
{27C23732-90E5-41DB-89E2-FB69FBA66EC2} = {BCD8CA0D-FE34-4A30-B716-F9FABA9AA74B}
7386
EndGlobalSection
7487
GlobalSection(ExtensibilityGlobals) = postSolution
7588
SolutionGuid = {B1A862E2-1FE4-4F3E-B84C-3479A0B3A783}

XEngine_Source/XEngine_StorageApp/Makefile

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ LOADBIN = -L /usr/local/lib/XEngine_Release/XEngine_BaseLib -L /usr/local/lib/XE
55
LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool -lXEngine_OPenSsl -lHelpComponents_XLog -lXEngine_ProcSdk -lXEngine_SystemApi -lRfcComponents_HttpServer -lNetHelp_APIHelp -lXStorage_SQLPacket -lXStorage_Protocol -lStorageModule_Config -lStorageModule_Session
66
LIBEX = -static-libgcc -ldl -lrt -lpthread
77
LOADSO = -Wl,-rpath=./,--disable-new-dtags
8-
LIBINCLUDE = StorageApp_Config.o StorageApp_Download.o StorageApp_Network.o StorageApp_Center.o StorageApp_UPLoader.o StorageApp_Task.o XEngine_StorageApp.o
8+
LIBINCLUDE = StorageApp_Config.o StorageApp_Download.o StorageApp_Network.o StorageApp_Center.o StorageApp_UPLoader.o StorageApp_Task.o Storage_TaskEvent.o Storage_TaskPass.o Storage_TaskQuery.o XEngine_StorageApp.o
99

1010
ifeq ($(RELEASE),1)
1111
FLAGS = -c -O2
@@ -36,6 +36,14 @@ StorageApp_UPLoader.o:./StorageApp_UPLoader.cpp
3636
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./StorageApp_UPLoader.cpp
3737
StorageApp_Task.o:./StorageApp_Task.cpp
3838
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./StorageApp_Task.cpp
39+
40+
Storage_TaskEvent.o:./Storage_APPTask/Storage_TaskEvent.cpp
41+
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./Storage_APPTask/Storage_TaskEvent.cpp
42+
Storage_TaskPass.o:./Storage_APPTask/Storage_TaskPass.cpp
43+
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./Storage_APPTask/Storage_TaskPass.cpp
44+
Storage_TaskQuery.o:./Storage_APPTask/Storage_TaskQuery.cpp
45+
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./Storage_APPTask/Storage_TaskQuery.cpp
46+
3947
XEngine_StorageApp.o:./XEngine_StorageApp.cpp
4048
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./XEngine_StorageApp.cpp
4149

XEngine_Source/XEngine_StorageApp/StorageApp_Center.cpp

Lines changed: 6 additions & 180 deletions
Original file line numberDiff line numberDiff line change
@@ -101,192 +101,18 @@ BOOL XEngine_Task_HttpCenter(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int
101101
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("业务客户端:%s,请求的API不支持"), lpszClientAddr);
102102
return FALSE;
103103
}
104-
105-
LPCTSTR lpszEvent = _T("Event");
106-
LPCTSTR lpszQuery = _T("Query");
107-
LPCTSTR lpszNotify = _T("Pass");
108-
109-
LPCTSTR lpszUPFile = _T("UPFile");
110-
LPCTSTR lpszDLFile = _T("DLFile");
111-
LPCTSTR lpszFile = _T("File");
112-
113104
//通知类型.用于多服务器
114-
if (0 == _tcsnicmp(lpszNotify, tszAPIMethod, _tcslen(lpszNotify)))
105+
if (0 == _tcsnicmp(XENGINE_STORAGE_APP_TASK_PASS, tszAPIMethod, _tcslen(XENGINE_STORAGE_APP_TASK_PASS)))
115106
{
116-
//下载
117-
if (0 == _tcsnicmp(lpszUPFile, tszAPIName, _tcslen(lpszUPFile)))
118-
{
119-
__int64x nFileSize = 0;
120-
TCHAR tszFileName[MAX_PATH];
121-
TCHAR tszFileHash[MAX_PATH];
122-
TCHAR tszClientAddr[128];
123-
124-
memset(tszFileName, '\0', MAX_PATH);
125-
memset(tszFileHash, '\0', MAX_PATH);
126-
memset(tszClientAddr, '\0', sizeof(tszClientAddr));
127-
128-
XStorageProtocol_Proxy_ParseNotify(lpszMsgBuffer, nMsgLen, tszClientAddr, tszFileName, tszFileHash, &nFileSize);
129-
130-
st_HDRParam.bIsClose = TRUE;
131-
st_HDRParam.nHttpCode = 200;
132-
133-
RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
134-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
135-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("业务客户端:%s,请求的上传文件通知协议成功,文件:%s,大小:%lld"), lpszClientAddr, tszFileName, nFileSize);
136-
}
137-
else if (0 == _tcsnicmp(lpszDLFile, tszAPIName, _tcslen(lpszDLFile)))
138-
{
139-
__int64x nFileSize = 0;
140-
TCHAR tszFileName[MAX_PATH];
141-
TCHAR tszFileHash[MAX_PATH];
142-
TCHAR tszClientAddr[128];
143-
144-
memset(tszFileName, '\0', MAX_PATH);
145-
memset(tszFileHash, '\0', MAX_PATH);
146-
memset(tszClientAddr, '\0', sizeof(tszClientAddr));
147-
148-
XStorageProtocol_Proxy_ParseNotify(lpszMsgBuffer, nMsgLen, tszClientAddr, tszFileName, tszFileHash, &nFileSize);
149-
150-
st_HDRParam.bIsClose = TRUE;
151-
st_HDRParam.nHttpCode = 200;
152-
153-
RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
154-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
155-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("业务客户端:%s,请求的下载文件通知协议成功,文件:%s,大小:%lld"), lpszClientAddr, tszFileName, nFileSize);
156-
}
107+
XEngine_Task_Pass(tszAPIName, lpszClientAddr, lpszMsgBuffer, nMsgLen, pSt_HTTPParam, pptszListHdr, nHdrCount);
157108
}
158-
else if (0 == _tcsnicmp(lpszQuery, tszAPIMethod, _tcslen(lpszQuery)))
109+
else if (0 == _tcsnicmp(XENGINE_STORAGE_APP_TASK_QUERY, tszAPIMethod, _tcslen(XENGINE_STORAGE_APP_TASK_QUERY)))
159110
{
160-
//文件查询类型
161-
if (0 == _tcsnicmp(lpszFile, tszAPIName, _tcslen(lpszFile)))
162-
{
163-
//查询文件列表
164-
int nMsgLen = 10240;
165-
TCHAR tszFileName[MAX_PATH];
166-
TCHAR tszFileHash[MAX_PATH];
167-
TCHAR tszTimeStart[128];
168-
TCHAR tszTimeEnd[128];
169-
TCHAR tszMsgBuffer[10240];
170-
171-
memset(tszFileName, '\0', MAX_PATH);
172-
memset(tszFileHash, '\0', MAX_PATH);
173-
memset(tszTimeStart, '\0', sizeof(tszTimeStart));
174-
memset(tszTimeEnd, '\0', sizeof(tszTimeEnd));
175-
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
176-
177-
int nListCount = 0;
178-
XSTORAGECORE_DBFILE** ppSt_ListFile;
179-
XStorageProtocol_Core_REQQueryFile(lpszMsgBuffer, tszTimeStart, tszTimeEnd, tszFileHash);
180-
181-
if (bIsSQL)
182-
{
183-
XStorageSQL_File_FileQuery(&ppSt_ListFile, &nListCount, tszTimeStart, tszTimeEnd, tszFileName, tszFileHash);
184-
st_HDRParam.bIsClose = TRUE;
185-
st_HDRParam.nHttpCode = 200;
186-
187-
XStorageProtocol_Core_REPQueryFile(tszMsgBuffer, &nMsgLen, &ppSt_ListFile, nListCount, tszTimeStart, tszTimeEnd);
188-
RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszMsgBuffer, nMsgLen);
189-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
190-
BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ListFile, nListCount);
191-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("业务客户端:%s,请求查询文件列表成功,列表个数:%d"), lpszClientAddr, nListCount);
192-
}
193-
else
194-
{
195-
st_HDRParam.bIsClose = TRUE;
196-
st_HDRParam.nHttpCode = 406;
197-
198-
RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
199-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
200-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _T("业务客户端:%s,请求查询文件列表失败,服务器没有启用这个功能"), lpszClientAddr);
201-
}
202-
}
111+
XEngine_Task_Query(tszAPIName, lpszClientAddr, lpszMsgBuffer, nMsgLen, pSt_HTTPParam, pptszListHdr, nHdrCount);
203112
}
204-
else if (0 == _tcsnicmp(lpszEvent, tszAPIMethod, _tcslen(lpszEvent)))
113+
else if (0 == _tcsnicmp(XENGINE_STORAGE_APP_TASK_EVENT, tszAPIMethod, _tcslen(XENGINE_STORAGE_APP_TASK_EVENT)))
205114
{
206-
//事件处理类型,上传事件,用于NGINX
207-
if (0 == _tcsnicmp(lpszUPFile, tszAPIName, _tcslen(lpszUPFile)))
208-
{
209-
LPCTSTR lpszContentType = _T("Content-Type");
210-
LPCTSTR lpszBoundaryStr = _T("boundary=");
211-
TCHAR tszContentStr[MAX_PATH];
212-
TCHAR tszBoundarTmp[MAX_PATH];
213-
TCHAR tszFileDir[MAX_PATH];
214-
TCHAR tszBoundarStr[512];
215-
XSTORAGECORE_DBFILE st_DBFile;
216-
217-
memset(tszContentStr, '\0', MAX_PATH);
218-
memset(tszBoundarTmp, '\0', MAX_PATH);
219-
memset(tszContentStr, '\0', MAX_PATH);
220-
memset(tszFileDir, '\0', MAX_PATH);
221-
memset(tszBoundarStr, '\0', sizeof(tszBoundarStr));
222-
memset(&st_DBFile, '\0', sizeof(XSTORAGECORE_DBFILE));
223-
224-
if (!RfcComponents_HttpHelp_GetField(&pptszListHdr, nHdrCount, lpszContentType, tszContentStr))
225-
{
226-
st_HDRParam.bIsClose = TRUE;
227-
st_HDRParam.nHttpCode = 400;
228-
229-
RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
230-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
231-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("业务客户端:%s,请求的HTTP头内容不正确,没有类型字段"), lpszClientAddr);
232-
return FALSE;
233-
}
234-
if (!BaseLib_OperatorString_FromStrGetKeyValue(tszContentStr, lpszBoundaryStr, NULL, tszBoundarTmp))
235-
{
236-
st_HDRParam.bIsClose = TRUE;
237-
st_HDRParam.nHttpCode = 400;
238-
239-
RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
240-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
241-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("业务客户端:%s,请求的HTTP头内容不正确,没有Boundary值"), lpszClientAddr);
242-
return FALSE;
243-
}
244-
_stprintf(tszBoundarStr, _T("--%s\r\n"), tszBoundarTmp);
245-
XStorageProtocol_Core_REQUPEvent(lpszMsgBuffer, tszBoundarStr, st_DBFile.st_ProtocolFile.tszFileName, tszFileDir, st_DBFile.st_ProtocolFile.tszFileHash, &st_DBFile.st_ProtocolFile.nFileSize);
246-
247-
if (st_ServiceCfg.st_XStorage.bRename)
248-
{
249-
memset(st_DBFile.st_ProtocolFile.tszFilePath, '\0', MAX_PATH);
250-
_tcscpy(st_DBFile.st_ProtocolFile.tszFilePath, st_ServiceCfg.st_XStorage.tszFileDir);
251-
}
252-
else
253-
{
254-
memset(st_DBFile.st_ProtocolFile.tszFileName, '\0', MAX_PATH);
255-
BaseLib_OperatorString_GetFileAndPath(tszFileDir, st_DBFile.st_ProtocolFile.tszFilePath, st_DBFile.st_ProtocolFile.tszFileName);
256-
st_DBFile.st_ProtocolFile.tszFilePath[_tcslen(st_DBFile.st_ProtocolFile.tszFilePath) - 1] = '\0';
257-
}
258-
259-
if (bIsSQL)
260-
{
261-
if (XStorageSQL_File_FileInsert(&st_DBFile))
262-
{
263-
st_HDRParam.nHttpCode = 200;
264-
RfcComponents_HttpServer_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
265-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
266-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("业务客户端:%s,处理NGINX代理上传文件成功,文件名:%s,大小:%lld"), lpszClientAddr, tszFileDir, st_DBFile.st_ProtocolFile.nFileSize);
267-
}
268-
else
269-
{
270-
st_HDRParam.nHttpCode = 403;
271-
RfcComponents_HttpServer_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
272-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
273-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("业务客户端:%s,处理NGINX代理上传文件失败,插入数据库失败:%s,错误:%lX"), lpszClientAddr, tszFileDir, XStorageDB_GetLastError());
274-
}
275-
}
276-
else
277-
{
278-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _T("业务客户端:%s,处理NGINX代理上传文件成功,文件名:%s,大小:%lld,服务器没有启用数据库,不插入"), lpszClientAddr, tszFileDir, st_DBFile.st_ProtocolFile.nFileSize);
279-
}
280-
281-
if (st_ServiceCfg.st_XStorage.bRename)
282-
{
283-
TCHAR tszFileTmp[1024];
284-
memset(tszFileTmp, '\0', sizeof(tszFileTmp));
285-
286-
_stprintf(tszFileTmp, _T("%s/%s"), st_DBFile.st_ProtocolFile.tszFilePath, st_DBFile.st_ProtocolFile.tszFileName);
287-
_trename(tszFileDir, tszFileTmp);
288-
}
289-
}
115+
XEngine_Task_Event(tszAPIName, lpszClientAddr, lpszMsgBuffer, nMsgLen, pSt_HTTPParam, pptszListHdr, nHdrCount);
290116
}
291117
return TRUE;
292118
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
#pragma once
22

3+
#define XENGINE_STORAGE_APP_TASK_EVENT _T("Event")
4+
#define XENGINE_STORAGE_APP_TASK_QUERY _T("Query")
5+
#define XENGINE_STORAGE_APP_TASK_PASS _T("Pass")
6+
7+
#define XENGINE_STORAGE_APP_METHOD_UPFILE _T("UPFile")
8+
#define XENGINE_STORAGE_APP_METHOD_DLFILE _T("DLFile")
9+
#define XENGINE_STORAGE_APP_METHOD_FILE _T("File")
10+
311
XHTHREAD CALLBACK XEngine_Center_HTTPThread(LPVOID lParam);
412
BOOL XEngine_Task_HttpCenter_APIList(LPCTSTR lpszUrlName, TCHAR* ptszAPIVersion, TCHAR* ptszAPIMethod, TCHAR* ptszAPIName);
513
BOOL XEngine_Task_HttpCenter(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, TCHAR** pptszListHdr, int nHdrCount);

XEngine_Source/XEngine_StorageApp/StorageApp_Hdr.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ extern XENGINE_SERVERCONFIG st_ServiceCfg;
7979
#include "StorageApp_Download.h"
8080
#include "StorageApp_UPLoader.h"
8181
#include "StorageApp_Center.h"
82+
#include "Storage_APPTask/Storage_TaskEvent.h"
83+
#include "Storage_APPTask/Storage_TaskPass.h"
84+
#include "Storage_APPTask/Storage_TaskQuery.h"
8285

8386
#ifdef _WINDOWS
8487
#pragma comment(lib,"Ws2_32.lib")
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
#include "../StorageApp_Hdr.h"
2+
3+
BOOL XEngine_Task_Event(LPCTSTR lpszAPIName, LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, TCHAR** pptszListHdr, int nHdrCount)
4+
{
5+
int nSDLen = 2048;
6+
TCHAR tszSDBuffer[2048];
7+
RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam;
8+
9+
memset(tszSDBuffer, '\0', sizeof(tszSDBuffer));
10+
memset(&st_HDRParam, '\0', sizeof(RFCCOMPONENTS_HTTP_HDRPARAM));
11+
12+
//事件处理类型,上传事件,用于NGINX
13+
if (0 == _tcsnicmp(XENGINE_STORAGE_APP_METHOD_UPFILE, lpszAPIName, _tcslen(XENGINE_STORAGE_APP_METHOD_UPFILE)))
14+
{
15+
LPCTSTR lpszContentType = _T("Content-Type");
16+
LPCTSTR lpszBoundaryStr = _T("boundary=");
17+
TCHAR tszContentStr[MAX_PATH];
18+
TCHAR tszBoundarTmp[MAX_PATH];
19+
TCHAR tszFileDir[MAX_PATH];
20+
TCHAR tszBoundarStr[512];
21+
XSTORAGECORE_DBFILE st_DBFile;
22+
23+
memset(tszContentStr, '\0', MAX_PATH);
24+
memset(tszBoundarTmp, '\0', MAX_PATH);
25+
memset(tszContentStr, '\0', MAX_PATH);
26+
memset(tszFileDir, '\0', MAX_PATH);
27+
memset(tszBoundarStr, '\0', sizeof(tszBoundarStr));
28+
memset(&st_DBFile, '\0', sizeof(XSTORAGECORE_DBFILE));
29+
30+
if (!RfcComponents_HttpHelp_GetField(&pptszListHdr, nHdrCount, lpszContentType, tszContentStr))
31+
{
32+
st_HDRParam.bIsClose = TRUE;
33+
st_HDRParam.nHttpCode = 400;
34+
35+
RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
36+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
37+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("业务客户端:%s,请求的HTTP头内容不正确,没有类型字段"), lpszClientAddr);
38+
return FALSE;
39+
}
40+
if (!BaseLib_OperatorString_FromStrGetKeyValue(tszContentStr, lpszBoundaryStr, NULL, tszBoundarTmp))
41+
{
42+
st_HDRParam.bIsClose = TRUE;
43+
st_HDRParam.nHttpCode = 400;
44+
45+
RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
46+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
47+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("业务客户端:%s,请求的HTTP头内容不正确,没有Boundary值"), lpszClientAddr);
48+
return FALSE;
49+
}
50+
_stprintf(tszBoundarStr, _T("--%s\r\n"), tszBoundarTmp);
51+
XStorageProtocol_Core_REQUPEvent(lpszMsgBuffer, tszBoundarStr, st_DBFile.st_ProtocolFile.tszFileName, tszFileDir, st_DBFile.st_ProtocolFile.tszFileHash, &st_DBFile.st_ProtocolFile.nFileSize);
52+
53+
if (st_ServiceCfg.st_XStorage.bRename)
54+
{
55+
memset(st_DBFile.st_ProtocolFile.tszFilePath, '\0', MAX_PATH);
56+
_tcscpy(st_DBFile.st_ProtocolFile.tszFilePath, st_ServiceCfg.st_XStorage.tszFileDir);
57+
}
58+
else
59+
{
60+
memset(st_DBFile.st_ProtocolFile.tszFileName, '\0', MAX_PATH);
61+
BaseLib_OperatorString_GetFileAndPath(tszFileDir, st_DBFile.st_ProtocolFile.tszFilePath, st_DBFile.st_ProtocolFile.tszFileName);
62+
st_DBFile.st_ProtocolFile.tszFilePath[_tcslen(st_DBFile.st_ProtocolFile.tszFilePath) - 1] = '\0';
63+
}
64+
65+
if (bIsSQL)
66+
{
67+
if (XStorageSQL_File_FileInsert(&st_DBFile))
68+
{
69+
st_HDRParam.nHttpCode = 200;
70+
RfcComponents_HttpServer_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
71+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
72+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("业务客户端:%s,处理NGINX代理上传文件成功,文件名:%s,大小:%lld"), lpszClientAddr, tszFileDir, st_DBFile.st_ProtocolFile.nFileSize);
73+
}
74+
else
75+
{
76+
st_HDRParam.nHttpCode = 403;
77+
RfcComponents_HttpServer_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
78+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
79+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("业务客户端:%s,处理NGINX代理上传文件失败,插入数据库失败:%s,错误:%lX"), lpszClientAddr, tszFileDir, XStorageDB_GetLastError());
80+
}
81+
}
82+
else
83+
{
84+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _T("业务客户端:%s,处理NGINX代理上传文件成功,文件名:%s,大小:%lld,服务器没有启用数据库,不插入"), lpszClientAddr, tszFileDir, st_DBFile.st_ProtocolFile.nFileSize);
85+
}
86+
87+
if (st_ServiceCfg.st_XStorage.bRename)
88+
{
89+
TCHAR tszFileTmp[1024];
90+
memset(tszFileTmp, '\0', sizeof(tszFileTmp));
91+
92+
_stprintf(tszFileTmp, _T("%s/%s"), st_DBFile.st_ProtocolFile.tszFilePath, st_DBFile.st_ProtocolFile.tszFileName);
93+
_trename(tszFileDir, tszFileTmp);
94+
}
95+
}
96+
return TRUE;
97+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#pragma once
2+
3+
BOOL XEngine_Task_Event(LPCTSTR lpszAPIName, LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, TCHAR** pptszListHdr, int nHdrCount);

0 commit comments

Comments
 (0)