Issue with checking InputStream size
本问题已经有最佳答案,请猛点这里访问。
我有一个奇怪的问题:
我的Dropwizard API处理上载的文件并将其保存为jpeg图像
上传的文件作为
使用
1 2 3 4 5 | InputStream imageStream = fileBody.getValueAs(InputStream.class); final int maxSize = 102400; final byte[] bytes = new byte[maxSize + 1]; int totalBytes = this.imageStream.read(bytes); System.out.println("totalBytes:"+totalBytes); |
返回的
我这里缺什么?
inputstream.read(byte[])
不保证阅读完整的内容。来自JavaDoc:
从输入流中读取一些字节数并将其存储到缓冲区数组B中。实际读取的字节数作为整数返回。此方法将一直阻塞,直到输入数据可用、检测到文件结尾或引发异常为止。
第一次调用似乎只有8181字节可用。您需要继续读取,直到方法返回-1并合并所有读取的字节。