struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jason Lea <ja...@kumachan.net.nz>
Subject Re: What is wrong with this upload filename (UTF-8) decoding?
Date Tue, 30 Dec 2003 02:15:23 GMT
Yes, I think you are right, i didn't realise which class we were talking 
about there.  I have just read a bit more about the Struts FileUpload 
and how it wraps commons upload.  Assuming Commons Upload works 
correctly with the setHeaderEncoding, then I guess there might be work 
around.

Struts will use org.apache.struts.upload.CommonsMultipartRequestHandler 
by default to handle extracting the parameters out of the request and 
populating the form.  It uses the DiskFileUpload class from Commons 
FileUpload.  It is that handler that we need to modify, to do that we 
could create our own using the 
org.apache.struts.upload.CommonsMultipartRequestHandler source as the basis.

We need to tell Struts to use ours instead of the defualt by adding this 
to your struts-config.xml

<controller multipartClass="my.own.MultiPartClassHandler" />

Then to modify org.apache.struts.upload.CommonsMultipartRequestHandler 
by creating our my.own.MultiPartClassHandler class.
We need to modify  the handleRequest() method like so:

  // Create and configure a DIskFileUpload instance.
  DiskFileUpload upload = new DiskFileUpload();

  upload.setHeaderEncoding("UTF-8");

  // Set the maximum size before a FileUploadException will be thrown.
  upload.setSizeMax((int) getSizeMax(ac));
  ...

This is all untested and off the top of my head, so there is likely to 
be a mistake there somewhere, but I think it is possible.


Daniel Rabe wrote:

>I see a similar problem with file upload. It doesn't look like
>org.apache.strugs.upload.FormFile exposes a setHeaderEncoding method...
>
>Daniel Rabe
>
>-----Original Message-----
>From: Jason Lea [mailto:jason@kumachan.net.nz] 
>Sent: Friday, December 26, 2003 1:33 PM
>To: Struts Users Mailing List
>Subject: Re: What is wrong with this upload filename (UTF-8) decoding?
>
>
>I have not used the file upload yet, but I believe you need to set the 
>encoding for the headers
>
>formFile.setHeaderEncoding("UTF-8")
>
>setHeaderEncoding does this:
>"Specifies the character encoding to be used when reading the headers of 
>individual parts. When not specified, or |null|, the platform default 
>encoding is used."
>If this was running on a English operating system it is probably 
>defaulting to the Latin-1 encoding.
>
> From this Java Doc:
>http://jakarta.apache.org/commons/fileupload/apidocs/org/apache/commons/file
>upload/FileUploadBase.html#setHeaderEncoding(java.lang.String)
>
>Please post back to the forum if this works.  I would be interested in 
>the result.
>
>Zsolt Koppany wrote:
>
>  
>
>>Hi,
>>
>>my application has to support UTF-8 including when files are uploaded 
>>with UTF-8 characters in the filename (for example: 
>>??????????????.txt).
>>
>>I use a servlet filter that always call
>>request.setCharacterEncoding("UTF-8") and my jsp pages contain 
>>response.setContentType("text/html; charset=UTF-8");
>>
>>Everything works fine except that I have problems with decoding of the 
>>name of uploaded filenames.
>>
>>I use the code below to get the name of the uploaded filename:
>>
>>String nm = formFile.getFileName();
>>String filename = new String(nm.getBytes(), "UTF-8");
>>
>>The code above converts only the first couple of characters correctly
>>(result: ??????????????????????.txt).
>>
>>Any ideas how to fix the problem?
>>
>>I use TC-4.1.29, Struts-1.1, jdk1.4.2_02 Windows-XP.
>>
>>Zsolt
>>
>>
>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: struts-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: struts-user-help@jakarta.apache.org
>>
>>
>> 
>>
>>    
>>
>
>  
>


-- 
Jason Lea



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


Mime
View raw message