• -------------------------------------------------------------
  • ====================================

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

技能 dewbay 5年前 (2019-04-12) 2247次浏览 已收录 0个评论 扫描二维码


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

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

Jersey开发Restful的文件上传接口如何传递数组参数
  1. @POST  
  2. @Path(“/user” )  
  3. public Response createUser(@FormParam(“username” ) String username,  
  4.            @FormParam( “keyword”) List<String> keywords) {  

文件上传接口如何传递数组参数?但是如果是上传文件的接口,因为使用了@FormDataParam 注解,则不能使用上述用法:Java 代码  

Jersey开发Restful的文件上传接口如何传递数组参数
  1. @POST  
  2. @Path(“/upload” )  
  3. @Consumes(MediaType.MULTIPART_FORM_DATA )  
  4. public Response uploadFile(@FormDataParam (“filename” ) String filename,  
  5.            @FormDataParam( “file”) InputStream uploadedInputStream,  
  6.            @FormDataParam( “file”) FormDataContentDisposition fileDetail ,  
  7.            @FormDataParam( “keyword”) final List<String> keywords) {  

访问这个接口时会发生异常:java.lang.IllegalArgumentException : wrong number of arguments 可见使用@FormDataParam 注解时,将参数类型定义成 List<String>是不行的,可以定义成 List<FormDataBodyPart>,从 FormDataBodyPart 对象中可以取得参数:Java 代码  

Jersey开发Restful的文件上传接口如何传递数组参数
  1. @POST  
  2. @Path(“/upload” )  
  3. @Consumes(MediaType.MULTIPART_FORM_DATA )  
  4. public Response uploadFile(@FormDataParam(“filename” ) String filename,  
  5.            @FormDataParam( “file”) InputStream uploadedInputStream,  
  6.            @FormDataParam( “file”) FormDataContentDisposition fileDetail ,  
  7.            @FormDataParam( “keyword”) final List<FormDataBodyPart> keywordObjs ) {  
  8.      if (keywordObjs != null && ! keywordObjs.isEmpty()) {  
  9.            for (FormDataBodyPart keywordObj : keywordObjs) {  
  10.               String keyword = keywordObj.getValueAs(String.class);  
  11.               System. out.println( “关键字:” + keyword );  
  12.           }  
  13.      }  

参见:http://stackoverflow.com/questions/10016921/posting-multiple-formdataparams-with-the-same-name-to-java-jersey-rest-service


露水湾 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Jersey开发Restful的文件上传接口如何传递数组参数
喜欢 (0)
[]
分享 (0)
关于作者:
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址