RestEasy - 上传带有西里尔文名称的文件(multipart / form-data)

时间:2015-01-16 15:07:05

标签: resteasy multipartform-data cyrillic

当我将文件上传到服务器时,一切都很好。但是,如果文件名包含西里尔字符,则在服务器上显示带有问号的文件名。

当我向服务器发送请求时,我没有设置任何字符编码。

我知道如果你在发出请求时没有在标题中添加任何字符编码,那么RestEasy提供的默认字符编码就是us-ascii。我尝试了几种方法来改变它:

  • 使用新的String(filename.getBytes(“US-ASCII”),“UTF-8”) - 不起作用;
  • 我写了ContainerRequestFilter,在那里我更改了此请求的ContentType,并将charset = UTF-8添加到ContentType。它设置正确但仍然无法正常工作。
你能帮忙吗?我会非常感激的!

谢谢!

也发布在jboss.org forum

1 个答案:

答案 0 :(得分:2)

不要更改Content-Type,而是使用ContainerRequestFilter覆盖默认的charset属性:

@Provider
public class CharsetFilter implements ContainerRequestFilter {

    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {
         requestContext.setProperty(InputPart.DEFAULT_CHARSET_PROPERTY, "UTF-8");
    }

}

也许您应该检查是否提供了编码,只有在没有时才覆盖。