java - 从内容配置中提取文件名

标签 java jersey

我的负载有 Content-Disposition 字段。我正在尝试上传一个 bpmn 文件。所以在后端我需要解析输入流并提取这个文件名。但我无法找到解决方案。我正在使用 jesrey 进行休息。

我试过:

@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
public Response addWorkflowSchema(@FormDataParam("bpmndata") InputStream uploadedInputStream,
         String filename,
        @Context HttpServletRequest request)

获取整个负载数据。但只有当我删除 FormDataParam 时,我才能获取请求正文。

请求负载:

------WebKitFormBoundary8CCb878TyZksE9go
Content-Disposition: form-data; name="bpmndata"; filename="process.bpmn"
Content-Type: application/octet-stream


------WebKitFormBoundary8CCb878TyZksE9go--

我需要从 Content-Disposition 获取文件名。我怎样才能得到这个。

最佳答案

只需注入(inject) FormDataContentDisposition也,并从that 中获取文件名。

public Response addWorkflowSchema(
                       @FormDataParam("bpmndata") InputStream in,
                       @FormDataParam("bpmndata") FormDataContentDisposition fdc) {

    String fileName = fdc.getFileName();
}

InputStream 只会是文件部分的内容。它不包含 header ,因此您无需从中提取任何内容。

关于java - 从内容配置中提取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31598622/

相关文章:

java - 如何存储暂停的天文台时间并以另一个 View 显示它

java - Jersey 服务器 JSON 响应抛出 MalformedChunkCodingException : Chunked stream ended unexpectedly

java - Android 相机在人像模式下保存图片

java - 我如何传递这样的参数,例如 : runType=EOD threadCnt=10 cleanLogs=true in my commandline java program?

java - 如何使用 spring 和 jersey 生成多种媒体类型

java - 如何在 Dropwizard 1.0.2 中使用 LoggingFeature 打印服务器响应?

jakarta-ee - Hadoop Jersey 与 Wildfly resteasy 冲突

json - JAX-RS/ Jersey : Change response body from Jackson JSON errors

java - 如何仅从 JavaFx 图表中的选定系列中删除符号标记?

java - 未找到 com.google.protobuf.GenerateMessageV3 的类文件