我们正在使用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.available()
返回"0"
我通过谷歌搜索了一些建议使用的链接
"PushbackInputStream"
(PushbackInputStream)
PushbackInputStream支持jdk-7,但我们使用的是jdk-6
如何检查inputStream是否为空???
答案 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
也许一个正在破坏另一个。