Multi-byte characters in multipart/form-data get corrupted in RESTEasy
Issue
- When sending a text attachment that contains multi-byte characters (for example, Scandic characters like Euro €), we confirmed that it actually reaches the RESTEasy service. However, the text attachment is corrupted when saving it as a file.
- The following is the source code:
@Path("/multipart")
public class MultipartService {
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response processAttachments(MultipartInput input, @Context ServletContext context) throws Exception {
List<InputPart> parts = input.getParts ();
for (InputPart part : parts) {
byte[] bytes = part.getBody(byte[].class, null);
String writeFileLocation = context.getInitParameter("write.file.location");
FileOutputStream fileOutputStream = new FileOutputStream(new File(writeFileLocation));
IOUtils.write(bytes, fileOutputStream);
IOUtils.closeQuietly(fileOutputStream);
}
return Response.ok().build();
}
Environment
- JBoss Enterprise Application Platform (EAP)
- 5.x
- 6.x
- JBoss Enterprise SOA Platform (SOA-P)
- 5.x
- JBoss RESTEasy
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.