Quarkus中非ASCII文件名文件上传异常问题求助
Quarkus中非ASCII文件名文件上传问题解决方案求助
在Quarkus框架中上传包含非ASCII文件名的文件时出现异常,相关代码如下:
package org.example; import jakarta.ws.rs.Consumes; import jakarta.ws.rs.POST; import jakarta.ws.rs.Path; import jakarta.ws.rs.core.MediaType; import java.util.List; import java.util.Map; import org.jboss.resteasy.annotations.providers.multipart.MultipartForm; import org.jboss.resteasy.plugins.providers.multipart.InputPart; import org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput; @Path("/hello") public class ExampleResource { @POST @Consumes(MediaType.MULTIPART_FORM_DATA) public void hello(@MultipartForm MultipartFormDataInput formDataInput) { Map<String, List<InputPart>> dataMap = formDataInput.getFormDataMap(); List<InputPart> inputs = dataMap.get("attachment"); System.out.println("Data map: " + dataMap); System.out.println("Data inputs: " + inputs); } }
复现步骤
- 创建两个对比文件:
Новый_документ.docx和New_document.docx; - 使用Postman以
attachment为键上传文件; - 调试发现
formDataInput.getFormDataMap()返回的Map键异常,文件名被截断,通过attachment获取InputPart返回null; - 上传ASCII文件名的文件则正常。
已尝试的无效方案
- 将
@Consumes改为@Consumes(MediaType.MULTIPART_FORM_DATA + ";charset=utf-8"); - 实现ContainerRequestFilter设置UTF-8编码。
目前临时通过手动解析Content-Disposition修正Map键值对,现寻求正确解决方案。
使用版本:
- io.quarkus:quarkus-bom:3.13.0
- org.jboss.resteasy:resteasy-multipart-provider:6.2.9.Final
内容的提问来源于stack exchange,提问作者Disteonne
相关产品推荐
相关产品推荐

