diff --git a/broker/src/main/java/com/xiaoleilu/loServer/action/FileAction.java b/broker/src/main/java/com/xiaoleilu/loServer/action/FileAction.java index 94940089..9c48c603 100755 --- a/broker/src/main/java/com/xiaoleilu/loServer/action/FileAction.java +++ b/broker/src/main/java/com/xiaoleilu/loServer/action/FileAction.java @@ -46,21 +46,28 @@ public class FileAction extends Action { return true; } - final File file = getFileByPath(request.getPath()); - Logger.debug("Client [{}] get file [{}]", request.getIp(), file.getPath()); + File file = null; + try { + file = getFileByPath(request.getPath()); + } catch (Exception e) { + response.sendError(HttpResponseStatus.NOT_FOUND, "404 File not found!"); + return true; + } - // 隐藏文件,跳过 - if (file.isHidden() || !file.exists()) { + // 隐藏文件或不存在,跳过 + if (file == null || file.isHidden() || !file.exists()) { response.sendError(HttpResponseStatus.NOT_FOUND, "404 File not found!"); return true; } // 非文件,跳过 - if (false == file.isFile()) { + if (!file.isFile()) { response.sendError(HttpResponseStatus.FORBIDDEN, "403 Forbidden!"); return true; } + Logger.debug("Client [{}] get file [{}]", request.getIp(), file.getPath()); + // Cache Validation String ifModifiedSince = request.getHeader(HttpHeaderNames.IF_MODIFIED_SINCE.toString()); if (StrUtil.isNotBlank(ifModifiedSince)) {