Apache ServletFIleUpload冻结

时间:2017-08-22 16:46:32

标签: apache servlets apache-commons-fileupload

这让我感到困惑。在下面的代码中甚至没有" 1"在控制台中打印出来。如果我在第一个system.out行中放置一个断点(使用eclipse),调试器永远不会退出它。没有例外。我还尝试将一个null参数传递给SFU的构造函数,以强制它抛出异常,但没有任何反应。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {                          
        System.out.println("1");

        try {                               
            ServletFileUpload upload = new ServletFileUpload();             
        } catch (Throwable e) {
            throw new ServletException(e);
        }

        System.out.println("2");
}

和html

<!DOCTYPE html>
<html lang="en">
    <head>
    <title>File Upload</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
    <form method="POST" action="loadFile" enctype="multipart/form-data" >
        <input type="file" name="myFile" id="myFile" /> <br/>
        <input type="submit" value="Upload" name="upload" id="upload" />
    </form>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

尝试从

中删除“抛出ServletException,IOException”
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

并更改

   try {                               
            ServletFileUpload upload = new ServletFileUpload();             
        } catch (Throwable e) {
            throw new ServletException(e);
        }

为:

   try {                               
            ServletFileUpload upload = new ServletFileUpload(); 
        //... rest of code

        } catch (FileUploadException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
       }

向catch子句添加任何其他异常,不要抛出它们。这就是为什么你看不出错误是什么

还注意到表单操作的名称是 loadFile 这与您的Servlet名称相对应吗? Servlet通常首字母大写!我怀疑这是真正的问题,你正在向服务器找不到的servlet发送一个post请求。