IOUtils.toByteArray是否有可能正在耗尽您的输入流,以便在进行服务调用时不再需要从中读取任何数据?在这种情况下,stream.reset()将解决此问题。
但是,如果您只是上传文件(而不是任意InputStream),则可以使用采用File的更简单形式的AmazonS3.putObject(),这样就根本不需要计算内容长度。
http://docs.amazonwebservices.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3.html#putObject(java.lang.String,java.lang.String,java.io.File)
这将自动多次重试任何此类网络错误。您可以使用ClientConfiguration对象实例化客户端重试多少次。
http://docs.amazonwebservices.com/AWSJavaSDK/latest/javadoc/com/amazonaws/ClientConfiguration.html#setMaxErrorRetry(int)



