Home Filename encoding is wrong in MultipartFormDataInput with RestEasy and Wildfly 11
Reply: 1

Filename encoding is wrong in MultipartFormDataInput with RestEasy and Wildfly 11

Tim Published in 2018-01-12 13:58:22Z

My upload rest method works fine unless the filename contains a special character:

@Consumes({ MediaType.MULTIPART_FORM_DATA })
public Response uploadFile(MultipartFormDataInput input) {
    Map<String, List<InputPart>> uploadForm = input.getFormDataMap();
    List<InputPart> inputParts = uploadForm.get("file_upload");

    // Do Stuff...


The filename is Test.png, inputPart.getHeaders() = [Content-Disposition=form-data; name="tws_file"; filename="test.png",Content-Type=image/png] --> OK

The filename is Döner.png, inputPart.getHeaders() = [Content-Disposition=form-data; name="tws_file"; filename="d��ner.png",Content-Type=image/png] --> Not OK

As you can see, the "ö" becomes "��".

Things I've tried so far:

  • Setting the default encoding in my jboss_web.xml to <default-encoding>UTF-8</default-encoding> (see here)
  • Changing my @Consumes annotation to @Consumes(MediaType.MULTIPART_FORM_DATA+";charset=UTF-8"); (see here)
  • Changing the encoding in a container request filter with requestContext.setProperty(InputPart.DEFAULT_CHARSET_PROPERTY, "UTF-8"); (see here)

Nothing seems to work. Any ideas ? I am using Wildfly 11 and Resteasy-multipart-provider 3.0.24.Final

Tim Reply to 2018-01-15 13:43:04Z

I ended up using the workaround of encoding the filename with a URI Encoder manually before sending it. On the other side, I decode it. That way, special characters are not a problem anymore.

Frontend in Angular:


Backend in Java:

URLDecoder.decode(fileName, "UTF-8");
You need to login account before you can post.

About| Privacy statement| Terms of Service| Advertising| Contact us| Help| Sitemap|
Processed in 0.313426 second(s) , Gzip On .

© 2016 Powered by mzan.com design MATCHINFO