http - 在 Mule 中使用 Jersey 实现文件上传时出现不支持的媒体类型 (415) 错误

标签 http file-upload jersey mule

我正在尝试使用 Mule 中的 Jersey 模块实现文件上传。

我的 mule 流程是这样的:

<flow name="rest-service">
    <inbound-endpoint address="http://localhost:9999/testupload"/>
    <jersey:resources>
        <component class="com.example.test.UploadFileResource"/>
    </jersey:resources>
</flow> 

如果我没有像下面这样在 UploadFileResource 的资源方法中放置 @Consumes 注释,当使用 multipart/form-data Content-type 发出 HTTP Post 请求时会调用该方法,并且我会得到 HTTP 2xx 状态代码:

@Path("/uploadfile")
public class UploadFileResource {

    @POST
    public Response uploadFile2(...) {
        logger.info("Multipart Upload");
        ...
    }
}

但是当我像下面这样用 MULTIPART_FORM_DATA 媒体类型放置 @Consumes 注释时,该方法不会被调用并且我得到 HTTP 415 Unsupported Media type,即使使用 multipart/form-data 内容类型发出 HTTP Post 请求也是如此:

@Path("/uploadfile")
public class UploadFileResource {

    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFile2(...) {
        logger.info("Multipart Upload");
        ...
    }
}

知道为什么即使@Consumes Media 类型与 HTTP Post Content-type header 匹配,也会出现 415 状态吗?

最佳答案

您可能需要按照 Jersey 文档第 8.3.1.2 Registration 章中的说明注册 MultipartFeature .

像这样创建一个类:

/**
 * 
 */
package com.verico.multipart.app;

import javax.ws.rs.ApplicationPath;

import org.glassfish.jersey.media.multipart.MultiPartFeature;
import org.glassfish.jersey.server.ResourceConfig;

@ApplicationPath("/")
public class MultiPartApp extends ResourceConfig {

public MultiPartApp() {
    super(MultiPartFeature.class);
    }
}

并将以下初始化参数添加到 web.xml 中的 Jersey servlet:

     <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.verico.multipart.app.MultiPartApp</param-value>
    </init-param>

关于http - 在 Mule 中使用 Jersey 实现文件上传时出现不支持的媒体类型 (415) 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18339987/

相关文章:

node.js - 使用 NodeJS 访问 Dropbox 上的文件

json - 了解 Json 格式的 openweathermap 结果

java - 批量上传和 Java servlet

java - 在 spring boot jar 中解压 Jersey 库

javascript - 通过 http 从 mjpeg 流中提取其他数据

php - 如何通过 PHP 将最干净的 url 获取/读取到 Meta Canonical?

python - 使用 Python (pysftp) 将文件上传到 SFTP 失败并显示 "No such file"

php - 跨浏览器 : File Upload Issue (HTML+PHP) - NOT TO UPLOAD IMMEDIATELY

spring - RuntimeException 无法映射到响应,重新抛出到 HTTP 容器 java.lang.NullPointerException

java - JerseyTest如何使用SpringBoot的上下文进行测试