我想使用http doDelete()方法从服务器删除文件

时间:2013-11-11 11:43:15

标签: java servlets

如果我想删除welcome.html文件如何删除它使用http doDelete()方法如何做到这一点我是java新手所以请plz帮助我

public void doDelete(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
  boolean success = false;
  File file = null;
  try {
    file = searchFile(request);
  } catch (Exception ex) {
    java.util.logging.Logger.getLogger(Request.class.getName()).
       log(java.util.logging.Level.SEVERE, null, ex);
  }
  if (!file.exists()) {
    response.sendError(HttpServletResponse.SC_NOT_FOUND); 
    return;
  } else {
    success = file.delete(); // actual delete operation
  }
  if (success) {
    response.setStatus(HttpServletResponse.SC_NO_CONTENT);
  }
}

private  String searchFile(HttpServletRequest req) throws Exception {
  String fileName = req.getPathInfo();
  fileName = fileName.substring(1);
  return fileName;
}

1 个答案:

答案 0 :(得分:5)

我们在等你解释 你的代码“如何工作”...我应该指出,如果这段代码 工作,那就是非常危险

您的代码不会尝试检查用户(即发送请求的人)是否应该删除该文件,或者用户试图删除的内容。如果有一个坏人发给你带有“..”的DELETE请求,他们可能会欺骗你的网络服务器试图删除文件系统中的任何文件!!! (希望你永远不会以“root”运行您的Web服务器......)


更新:您的问题的答案很简单。变化

file = searchFile(request);

file = new File(searchFile(request));

但那是你问题的最少