Not quite solved,

The code only works if I include the source files for FileUpload.

If I use the jar in the build path, it still fails. Have anybody come across this
before?

Ben



Ben Kuek wrote:

Solved,

I downloaded the source to find out that I missed the commons.io package.

On the FileUpload Project Dependencies page, I should have find out what it means
when it said that commons.io is optional.


Ben





Ben Kuek wrote:

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 <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



------------------------------------------------------------------------

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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]







---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]







---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to