Skip to content

Commit a12df2b

Browse files
committed
added:upload create ready supported
1 parent 4547c48 commit a12df2b

File tree

4 files changed

+53
-2
lines changed

4 files changed

+53
-2
lines changed

XEngine_Source/StorageModule_Config/Config_Define.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ typedef struct
138138
bool bCreateDir;
139139
bool bRewrite;
140140
bool bUPLimit;
141+
bool bUPReady;
141142
}st_PermissionFlags;
142143
}XENGINE_STORAGEBUCKET;
143144
typedef struct

XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,7 @@ bool CConfig_Json::Config_Json_LoadBalance(LPCXSTR lpszConfigFile, XENGINE_LBCON
446446
st_Bucket.st_PermissionFlags.bCreateDir = st_JsonPermission["CreateDir"].asBool();
447447
st_Bucket.st_PermissionFlags.bRewrite = st_JsonPermission["Rewrite"].asBool();
448448
st_Bucket.st_PermissionFlags.bUPLimit = st_JsonPermission["UPLimit"].asBool();
449+
st_Bucket.st_PermissionFlags.bUPReady = st_JsonPermission["bUPReady"].asBool();
449450

450451
pSt_ServerConfig->st_LoadBalance.pStl_ListBucket->push_back(st_Bucket);
451452
}

XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,12 +203,61 @@ bool XEngine_Task_HttpUPLoader(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, in
203203
return false;
204204
}
205205
}
206-
206+
//修正文件路径
207207
int nPathType = 0;
208208
_xstprintf(tszFileDir, _X("%s/%s"), st_StorageBucket.tszFilePath, tszFileName);
209209
BaseLib_OperatorString_GetPath(tszFileDir, &nPathType);
210210
BaseLib_OperatorString_FixPath(tszFileDir, nPathType);
211+
//得到上传大小
212+
XCHAR tszVluStr[8] = {};
213+
if (HttpProtocol_ServerHelp_GetField(&pptszListHdr, nHdrCount, _X("Content-Length"), tszVluStr))
214+
{
215+
if (0 == _ttxoi(tszVluStr))
216+
{
217+
if (st_StorageBucket.st_PermissionFlags.bUPReady)
218+
{
219+
//文件是否存在
220+
if (0 == _xtaccess(tszFileDir, 0) && !st_StorageBucket.st_PermissionFlags.bRewrite)
221+
{
222+
st_HDRParam.bIsClose = true;
223+
st_HDRParam.nHttpCode = 403;
224+
HttpProtocol_Server_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
225+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER);
226+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("上传客户端:%s,准备上传文件:%s 失败,文件已经存在"), lpszClientAddr, tszFileDir);
227+
return true;
228+
}
229+
//文件是否可写
230+
FILE* pSt_File = _xtfopen(tszFileDir, _X("wb"));
231+
if (NULL != pSt_File)
232+
{
233+
st_HDRParam.bIsClose = true;
234+
st_HDRParam.nHttpCode = 403;
235+
HttpProtocol_Server_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
236+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER);
237+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("上传客户端:%s,准备上传文件:%s 失败,创建文件失败"), lpszClientAddr, tszFileDir);
238+
return true;
239+
}
240+
fclose(pSt_File);
211241

242+
st_HDRParam.bIsClose = false;
243+
st_HDRParam.nHttpCode = 201;
244+
HttpProtocol_Server_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
245+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER);
246+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("上传客户端:%s,准备上传文件:%s 成功"), lpszClientAddr, tszFileDir);
247+
return true;
248+
}
249+
else
250+
{
251+
st_HDRParam.bIsClose = true;
252+
st_HDRParam.nHttpCode = 403;
253+
HttpProtocol_Server_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
254+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER);
255+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("上传客户端:%s,准备上传文件:%s 失败,服务器关闭了UPReady,无法继续"), lpszClientAddr, pSt_HTTPParam->tszHttpUri);
256+
return true;
257+
}
258+
}
259+
}
260+
//开始处理文件
212261
if (!Session_UPStroage_Exist(lpszClientAddr))
213262
{
214263
int nPosStart = 0;

XEngine_Source/XEngine_StorageApp/StorageApp_Webdav.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ bool XEngine_Task_HttpWebdav(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
6161
//用于心跳
6262
st_HDRParam.bIsClose = true;
6363
st_HDRParam.nHttpCode = 200;
64-
LPCXSTR lpszHdrBuffer = _X("Allow: POST GET PUT PROPFIND DELETE OPTIONS\r\n");
64+
LPCXSTR lpszHdrBuffer = _X("Allow: OPTIONS POST GET PUT PROPFIND DELETE LOCK\r\n");
6565
HttpProtocol_Server_SendMsgEx(xhWebdavHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, lpszHdrBuffer);
6666
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPWEBDAV);
6767
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("WEBDAV客户端:%s,请求OPTIONS心跳方法成功"), lpszClientAddr);

0 commit comments

Comments
 (0)