You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 03:27:03