Jersey开发Restful的文件上传接口如何传递数组参数

 

一般Rest接口如何传递数组参数?

需要传递数组参数的情况,如果是一般的form表单,可以直接定义参数类型为List<String>即可(不能定义为数组类型,否则只能得到一个null)。

示例代码如下:
@POST
@Path("/user" )
public Response createUser(@FormParam("username" ) String username,
           @FormParam( "keyword") List<String> keywords) {

文件上传接口如何传递数组参数?
但是如果是上传文件的接口,因为使用了 @FormDataParam 注解,则不能使用上述用法:
@POST
@Path("/upload" )
@Consumes(MediaType.MULTIPART_FORM_DATA )
public Response uploadFile(@FormDataParam ("filename" ) String filename,
           @FormDataParam( "file") InputStream uploadedInputStream,
           @FormDataParam( "file") FormDataContentDisposition fileDetail ,
           @FormDataParam( "keyword") final List<String> keywords) {
访问这个接口时会发生异常:
java.lang.IllegalArgumentException   : wrong number of arguments
 
可见使用 @FormDataParam 注解时,将参数类型定义成List<String>是不行的,可以定义成 List<FormDataBodyPart> ,从 FormDataBodyPart对象中可以取得参数:
@POST
@Path("/upload" )
@Consumes(MediaType.MULTIPART_FORM_DATA )
public Response uploadFile(@FormDataParam("filename" ) String filename,
           @FormDataParam( "file") InputStream uploadedInputStream,
           @FormDataParam( "file") FormDataContentDisposition fileDetail ,
           @FormDataParam( "keyword") final List<FormDataBodyPart> keywordObjs ) {
     if (keywordObjs != null && ! keywordObjs.isEmpty()) {
           for (FormDataBodyPart keywordObj : keywordObjs) {
              String keyword = keywordObj.getValueAs(String.class);
              System. out.println( "关键字:" + keyword );
          }
     }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值