Hello Christopher , Thanks for your input,
>ServletRequest.getContentLength is declared to return an int value (32-bit): >* Integer.MAX_VALUE = 2^31 - 1 = 2147483647 >* 2GiB = 2 * 1024 * 1024 * 1024 = 2147483648 >* 2147483648 > 2147483647 >Therefore, request.getContentLength cannot be used to fetch >content-lengths over 2GiB - 1byte. Yes above is already investigated, BTW thanks . You have to use >ServletRequest.getContentLengthLong (new in servlet 3.1) for this we have to upgrade tomcat 8, currently we are using tomcat 7.0.54. > or call >HttpServletRequest.getHeader("Content-Length") as a String and parse it >yourself. OK, but where we need to do this, in init() method or in doFilter() method, but FYI, the request(upload file >2GB) is not reached to doFilter(). Apart from above thread we want to share more information so that tomcat team help us to get out from this issue. For my struts project the doFilter() fails to get any request from the file upload form in cases the size of the file is greater than 2gb. Below is the code fragment: Filter is as follows: public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; HttpSession session = request.getSession(false); request.setCharacterEncoding("UTF-8"); /* do the other business work example request response monitoring and logging */ chain.doFilter(request, response); } jsp is : <s:form id="uploadData" action="UploadAction" namespace="xyz" validateFields="false" method="post" enctype="multipart/form-data"> For my jsp the form is submitted as a XMLHttpRequest via the underlying javascipt. Now when I upload a a file (lesser than 2gb) ,in my dofilter() method I have checked the uri and request length for the request. They are as expected via the action called in the jsp form and the file size. The file upload works fine in this case. But in case where the file size is greater than 2gb , in my doFilter() method no request is available for the file upload action called by the form submit(for file size greater than 2 gb). Thus the upload does not proceed further in such cases. I am using servlet 3.0. What do I need to do to support larger than 2 gb file uploads, so that the request reaches the doFilter() method? ________________________________________ From: Christopher Schultz <ch...@christopherschultz.net> Sent: Wednesday, January 13, 2016 8:11 PM To: Tomcat Users List Subject: Re: File size >= 2GB not uploaded in application [Tomcat 7.0.54 Struts: 2.3.24 JAVA: openJDK 1.7.79] Rahul, On 1/12/16 10:56 PM, Rahul Singh wrote: > Hi, > >> Define "Not successful"? Exceptions thrown? File truncated? Upload >> never starts? Never finishes? > > Not successful : > > Request Never finishes, we have trace the HttpServlet request object > and request.getContentLength return 0 in case when file size is >=2GB, > > No exception thrown, as well as when file size is less than 2GB, then > request.getContentLength return the correct value of file size in > byte. ServletRequest.getContentLength is declared to return an int value (32-bit): * Integer.MAX_VALUE = 2^31 - 1 = 2147483647 * 2GiB = 2 * 1024 * 1024 * 1024 = 2147483648 * 2147483648 > 2147483647 Therefore, request.getContentLength cannot be used to fetch content-lengths over 2GiB - 1byte. You have to use ServletRequest.getContentLengthLong (new in servlet 3.1) or call HttpServletRequest.getHeader("Content-Length") as a String and parse it yourself. -chris --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org