Skip to content

Commit 47f3cbd

Browse files
committed
added:upload file can be set permission when path not exist
1 parent ae80263 commit 47f3cbd

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed

XEngine_Source/StorageModule_Config/Config_Define.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,10 @@ typedef struct
116116
TCHAR tszBuckSize[64];
117117
int nLevel;
118118
BOOL bEnable;
119+
struct
120+
{
121+
bool bCreateDir;
122+
}st_PermissionFlags;
119123
}XENGINE_STORAGEBUCKET;
120124
typedef struct
121125
{

XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,8 @@ BOOL CConfig_Json::Config_Json_LoadBalance(LPCTSTR lpszConfigFile, XENGINE_LBCON
352352
_tcscpy(st_Bucket.tszBuckKey, st_JsonBucket[i]["XEngine_Key"].asCString());
353353
_tcscpy(st_Bucket.tszFilePath, st_JsonBucket[i]["XEngine_Path"].asCString());
354354

355+
Json::Value st_JsonPermission = st_JsonBucket[i]["PermissionFlags"];
356+
st_Bucket.st_PermissionFlags.bCreateDir = st_JsonPermission["CreateDir"].asBool();
355357
pSt_ServerConfig->st_LoadBalance.pStl_ListBucket->push_back(st_Bucket);
356358
}
357359
return TRUE;

XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,25 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in
235235
return FALSE;
236236
}
237237
}
238+
TCHAR tszTmpPath[MAX_PATH];
239+
memset(tszTmpPath, '\0', MAX_PATH);
240+
241+
BaseLib_OperatorString_GetFileAndPath(tszFileDir, tszTmpPath);
242+
if (0 != _taccess(tszTmpPath, 0))
243+
{
244+
//不存在,是否允许创建?
245+
if (!st_StorageBucket.st_PermissionFlags.bCreateDir)
246+
{
247+
st_HDRParam.bIsClose = TRUE;
248+
st_HDRParam.nHttpCode = 404;
249+
250+
RfcComponents_HttpServer_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
251+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER);
252+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("上传客户端:%s,请求上传文件失败,上传文件夹不存在,权限错误,文件:%s"), lpszClientAddr, tszFileDir);
253+
return FALSE;
254+
}
255+
SystemApi_File_CreateMutilFolder(tszTmpPath);
256+
}
238257
if (!Session_UPStroage_Insert(lpszClientAddr, st_StorageBucket.tszBuckKey, tszFileDir, nPosCount, nRVCount, nPosStart, nPosEnd))
239258
{
240259
st_HDRParam.bIsClose = TRUE;

0 commit comments

Comments
 (0)