首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FormDataParam InputStream返回值,即使文件为空

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

Stack Overflow用户
提问于 2014-08-11 12:48:03
回答 2查看 1K关注 0票数 2

我们使用的是java 6,我需要检查"inputStream“是否为空。

代码语言:javascript
复制
@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"
  • 我通过google搜索了一些建议使用"PushbackInputStream" (PushbackInputStream)的链接。
  • PushbackInputStream支持jdk-7,但我们使用的是jdk-6。
  • 如何解决这个问题?

如何检查inputStream是否为空?

EN

回答 2

Stack Overflow用户

发布于 2016-03-21 10:52:22

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

您可以通过方法中的多个参数获得有关上载文件的其他信息,并且可以使用它来检查文件的名称。如果是空的,那么InputStream应该是空的:

代码语言:javascript
复制
@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();
}
票数 0
EN

Stack Overflow用户

发布于 2018-11-13 22:11:49

您不应该为每个param指定不同的名称,例如:

代码语言:javascript
复制
@FormDataParam("file") InputStream is,
@FormDataParam("details") FormDataContentDisposition fileDetails

也许其中一个在打另一个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25243675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档