在Java REST Web服务中访问multipart / form-data post请求的各个部分

问题描述 投票:7回答:1

我有一个多部分表单,它应该上传一个文件以及一些参数。它看起来像这样:

<form id="upload" action="http://localhost:9998/test" method="post" enctype="multipart/form-data">
    <input name="inputfile" type="file" size="50" accept="application/octet-stream">
    <input name="someparameter" type="text" size="10">
    <input type="submit" value="Go!">
</form>

Web服务看起来像这样:

@Path("/test")
public class ServiceInterface {
    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public void execute(@FormParam(value="someparameter") String param) {
        System.out.println(param);
    }
}

提交表单时,“someparameter”的值始终报告为null,尽管在我输入的值的形式中。

我的问题是:

  1. 上面的代码有什么问题?
  2. 我如何访问与表单一起传输的文件?

我正在使用Jersey 1.10。

java rest file-upload jersey
1个回答
14
投票

好吧,经过谷歌搜索几个小时后,我在代码中发现了错误。

您必须使用注释@FormDataParam而不是@FormParam。

生成的代码如下所示:

@Path("/test")
public class ServiceInterface {
    @POST
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public void execute(
                   @FormDataParam("someparameter") String param
                   @FormDataParam("inputfile") File inputfile
                       )
    {
        System.out.println(param);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.