FormDataParam InputStream返回值,即使文件为空

时间:2014-08-11 12:48:03

标签: java tomcat

我们正在使用java 6.我需要检查" inputStream"是否为空。

@POST
@Path("/test")
@ApiOperation ( value = "Test", response = String.class)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String test(
  @ApiParam(value = "file upload") @FormDataParam("file") InputStream is
) {
  return is.read();
}

inputStream返回" 117"即使我们没有上传文件,也会在阅读时阅读。

  • 我一直在阅读inputStream使用inputStream.available()     返回"0"
  • 我通过谷歌搜索了一些建议使用的链接     "PushbackInputStream"PushbackInputStream

  • PushbackInputStream支持jdk-7,但我们使用的是jdk-6

  • 如何解决这个问题??

如何检查inputStream是否为空???

2 个答案:

答案 0 :(得分:0)

inputStream.available()也为我的请求返回0。我不知道我的解决方案是否每次都有效,但它对我有用。

您可以使用方法中的另外一个参数获取有关上载文件的其他信息,您可以使用它来检查文件的名称。如果它为空,则InputStream应为空:

@POST
@Path("/test")
@ApiOperation ( value = "Test", response = String.class)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String test(
    @FormDataParam("file") InputStream is,
    @FormDataParam("file") FormDataContentDisposition fileDetails
) {
    String fileName = fileDetails.getFileName();
    if (fileName != null && !fileName.equals("")) {
        // read the input stream
    }

    return is.read();
}

答案 1 :(得分:0)

您是否应该为每个参数指定一个不同的名称,例如:

@FormDataParam(“ file”)InputStream是, @FormDataParam(“ details”)FormDataContentDisposition fileDetails

也许一个正在破坏另一个。