myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeanne Waldman <jeanne.wald...@oracle.com>
Subject Re: [Trinidad] File upload issue
Date Tue, 30 Aug 2011 01:49:33 GMT
Hi Jason,
Did you create a JIRA issue for this yet along with your use case?
Thanks,
Jeanne

Jason Lee wrote, On 8/23/2011 8:42 AM PT:
> I have been trying to get tr:inputFile to work, but I keep getting EOFExceptions.  I
traced it down to MultipartFormHandler._skipBoundary().  The first issue is the EOFException,
as noted in the comment, is a horribly misleading exception. :)  The reason the exception
was thrown, though, seems to be a problem with the boundary handling.
>
> In _parseBoundary(), contentType might be passed something like "multipart/form-data;
boundary=---------------------------135858097916243791492128236579;charset=UTF-8".  However,
when _skipBoundary() is called, _readLine() returns "-----------------------------135858097916243791492128236579".
 Note that the first string has ";charset=UTF-8" at the end, while the second does not.  It
seems that ExternalContext.getContentType() appends that for reason (I'm posting from a Facelets
page with the encoding set to UTF-8 ("<?xml version='1.0' encoding='UTF-8' ?>"), so
that might be the case.
>
> At any rate, I made the following changes that seems to allow the uploads to work as
expected (as well as throwing what seems to me be a more reasonable Exception, though it could
use i18n help).
>
> Is there a chance we could get this change reviewed and committed? Or perhaps a better
explanation of/fix for what we're seeing?
>
> Thanks! :)
>
> Index: trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/util/MultipartFormHandler.java
> ===================================================================
> --- trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/util/MultipartFormHandler.java
   (revision 1160712)
> +++ trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/share/util/MultipartFormHandler.java
   (working copy)
> @@ -225,7 +225,7 @@
>      if (!line.startsWith(_boundary))
>      {
>        // A better exception would be nice.
> -      throw new EOFException();
> +      throw new IllegalStateException("Boundary information not found. Unable to process
upload.");
>      }
>    }
>
> @@ -388,9 +388,14 @@
>      {
>        return null;
>      }
> +    String boundary = contentType.substring(boundaryStart + _BOUNDARY_PARAMETER.length());
> +    final int semicolonIndex = boundary.indexOf(";");
> +    if (semicolonIndex > -1) {
> +        boundary = boundary.substring(0, semicolonIndex);
> +    }
>
>      // Boundary always starts with "--"
> -    return "--" + contentType.substring(boundaryStart + _BOUNDARY_PARAMETER.length());
> +    return "--" + boundary;
>    }
>
>    //Reads the ContentType string out of a line of the incoming request
>
>

Mime
View raw message