2017-07-05 21 views
0

ファイルをデータベースにアップロードするのに@MultipartConfigを使用していますが、5 MBより小さい小さなファイルに対してのみ機能します。大きなファイルを扱うためにコードを改善するには?サーブレットmultipart設定で大きなファイルをアップロードできません

@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 in server.xml)を制限する設定があり、デフォルトでは2MBに制限されています。

アップロードが長くなればそれだけ、読み取り/書き込みタイムアウトが、接続を閉じることができないが!(例えば、低帯域幅のための)

あなたはすべての問題があったかどうかを確認するには例外あなたcatchを印刷することができますあなたはそれをサーバで入手することができます。

は(あなたのSQLの方法をp.s、データソースプールとても怖いのですか?)

+0

私は、データベース接続で私のアプリを初期化し、コンテキスト属性として接続オブジェクトを設定するcontextlistenerを使用しています。 – Png

関連する問題