package com.agilecontrol.nea.core.control.web.binhandler; import com.agilecontrol.nea.core.control.util.FileDownload; import com.agilecontrol.nea.core.control.web.binhandler.BinaryHandler; import com.agilecontrol.nea.core.util.ConfigValues; import java.io.File; import java.io.PrintWriter; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class BFile implements BinaryHandler { private static final Logger log = LoggerFactory.getLogger(BFile.class); private static final String CONTENT_TYPE = "text/html; charset=UTF-8"; private boolean isChildren(File file, File parent) { boolean b; for(b = file.getParentFile().equals(parent); !b; b = file.getParentFile().equals(parent)) { file = file.getParentFile(); if(file == null) { break; } } return b; } public void process(HttpServletRequest request, HttpServletResponse response) throws Exception { String filePath = request.getParameter("f"); String out; if(filePath == null) { out = request.getPathInfo(); int parentFolder = out.indexOf(47, 1); if(parentFolder > 0) { filePath = out.substring(parentFolder + 1); } } if(filePath != null && !filePath.trim().equals("")) { filePath = filePath.trim(); out = ConfigValues.get("bfile.root_dir", ConfigValues.DIR_NEA_ROOT + "/bfile"); File parentFolder1 = new File(out); File file = new File(out + File.separator + filePath); if(file.exists() && file.isFile() && this.isChildren(file, parentFolder1)) { FileDownload fileDownload = new FileDownload(); fileDownload.processRequest(request, response, true, file, new String[0]); } else { log.warn("Could not load file:" + file.getAbsolutePath()); response.sendError(404); } } else { response.setContentType("text/html; charset=UTF-8"); PrintWriter out1 = response.getWriter(); out1.println(""); out1.println("
文件不存在,或者文件不可读,或者没有指定文件名
"); out1.println(""); } } public void init(ServletContext context) { } }