commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ben Kuek <ben.k...@abridge.com.au>
Subject Re: [FileUpload] Servlet stopping at servletFileUpload.parseRequest(request)
Date Fri, 06 Jul 2007 03:12:05 GMT

Thank you for your reply, I'll be more descriptive;



1)  I change the content to include blank lines and confirmed its 
arrival at the
servlet. Printing the request stream at the servlet I get:

Content-type: multipart/form-data, boundary=AaB03x

--AaB03x
content-disposition: form-data; name="field1"

Joe Blow
--AaB03x
content-disposition: form-data; name="pics"; filename="file1.txt"
Content-Type: text/plain

... contents of file1.txt ...
--AaB03x--




2) The part I commented are just code to print the request stream. I tested
with and without printing the stream to the console.




3) On the servlet side, I have:

public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        process(request, response);
}

private void process(HttpServletRequest request, HttpServletResponse 
response)
    throws ServletException, IOException {
       
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        if (isMultipart) {
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload servletFileUpload = new 
ServletFileUpload(factory);

            try {

                // Print the request stream
                int intChar;
                BufferedReader testBR = request.getReader();
                while( (intChar = testBR.read())  != -1) {
                    System.out.print((char)intChar);       
                }
                testBR.close();
               
                // It doesn't get pass this line
                List items = servletFileUpload.parseRequest(request);

                Iterator iter = items.iterator();
              
                // ..... code omitted

            } catch (Exception e) { // this part is not run
                System.out.println(e.getMessage());
                e.printStackTrace();
                log.error(e.getMessage());
                
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
            }
            response.setStatus(HttpServletResponse.SC_OK);
        } else { // not multipart
            response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
        }
    }





Rgds,
Ben




Martin Cooper wrote:
> A few comments:
>
> 1) The content you quote below does not match that in the RFC. The blank
> lines are very important.
> 2) Your code shows some stuff that's commented out that would prevent the
> upload from working if it was not commented out.
> 3) You don't show how you're creating and initialising the 
> servletFileUpload
> instance, so we can't tell if you got that right.
>
> -- 
> Martin Cooper
>
>
> On 7/4/07, Ben Kuek <ben.kuek@abridge.com.au> wrote:
>>
>>
>> Hello,
>>
>> I am using commons-fileupload-1.2
>>
>> I am trying to upload a multipart/form-data from a client application
>> (written in C#)
>> to the servlet.
>>
>> The servlet stops at:
>>
>> servletFileUpload.parseRequest(request);
>>
>> returning an internal server error (500) to the client.
>> There are no error messages printed.
>> System.out.println(exception.getMessage()); doesn't seem to do anything
>>
>>
>>
>> -------------------------------------------------------------------------------------------

>>
>>
>> For testing, I made sure that the client sent the following string
>> (example from RFC 1867):
>>
>> Content-type: multipart/form-data, boundary=AaB03x
>> --AaB03x
>> content-disposition: form-data; name="field1"
>> Joe Blow
>> --AaB03x
>> content-disposition: form-data; name="pics"; filename="file1.txt"
>> Content-Type: text/plain
>> ... contents of file1.txt ...
>> --AaB03x--
>>
>>
>>
>> -------------------------------------------------------------------------------------------

>>
>>
>> In the servlet, I made sure that the string is received by printing the
>> request stream:
>>
>>                //int intChar;
>>                //BufferedReader testBR = request.getReader();
>>                //while( (intChar = testBR.read())  != -1) {
>>                //    System.out.print((char)intChar);
>>                //}
>>                //testBR.close();
>>
>>                // I've confirmed that the string printed are as sent by
>> the client
>>
>>                // Servlet will not move pass this line
>>                List items = servletFileUpload.parseRequest(request);
>>
>> -------------------------------------------------------------------------------------------

>>
>>
>>
>> Am I doing something wrong?
>>
>> Warmest regards,
>> Ben
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: commons-user-help@jakarta.apache.org
>>
>>
>
> ------------------------------------------------------------------------
>
> No virus found in this incoming message.
> Checked by AVG Free Edition. 
> Version: 7.5.476 / Virus Database: 269.10.0/886 - Release Date: 4/07/2007 1:40 PM
>   


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org


Mime
View raw message