2017-07-05 71 views
0

我正在使用@MultipartConfig將文件上傳到數據庫,但它僅適用於小於5 MB的小文件。如何提高我的代碼以處理較大的文件?Servlet多部分配置無法上傳較大的文件

@WebServlet(name = "Upload", urlPatterns = {"/upload"}) 
@MultipartConfig(maxFileSize = 16177215) 
public class Upload extends HttpServlet { 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     InputStream in = null; 

     Part filePart = request.getPart("pdffile"); 

     if (filePart != null) { 
      in = filePart.getInputStream(); 
     } 
     Connection con = (Connection) getServletContext().getAttribute("Connection"); 
     String sql = "INSERT INTO storepdf (pdffile) VALUES (?)"; 
     try (PreparedStatement stat = con.prepareStatement(sql)) { 
      if (in != null) { 
       stat.setBlob(1, in); 
      } 
      int i = stat.executeUpdate(); 
      request.setAttribute("res", i); 

     } catch (SQLException e) { 

     } 
     request.getRequestDispatcher("finish.jsp").forward(request, response); 
    } 
} 

回答

1

確保服務器允許您讓用戶上傳超過此數量。例如,tomcat配置爲限制上傳大小(中的maxPostSize),默認情況下限制爲2MB。

不僅如此,如果上傳得長的讀/寫超時也可以關閉連接!(例如低帶寬)

您可以打印異常您catch,以找出是否有任何問題你可以在服務器上得到它。

(P.S的方式,你的SQL,是那麼嚇人,數據源池?)

+0

我使用contextlistener初始化我與數據庫的連接和設置連接對象作爲一個上下文屬性的應用程序。 – Png