我有一个800KB的JPG文件.我尝试上传到S3并继续获得超时错误.你能想出什么是错的吗?800KB对于上传而言相当小.
错误消息:未在超时期限内读取或写入与服务器的套接字连接.空闲连接将被关闭.
HTTP状态代码:400
AWS错误代码:RequestTimeout
Long contentLength = null;
System.out.println("Uploading a new object to S3 from a file\n");
try {
byte[] contentBytes = IOUtils.toByteArray(is);
contentLength = Long.valueOf(contentBytes.length);
} catch (IOException e) {
System.err.printf("Failed while reading bytes from %s", e.getMessage());
}
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(contentLength);
s3.putObject(new PutObjectRequest(bucketName, key, is, metadata));
Run Code Online (Sandbox Code Playgroud)
Zac*_*ave 10
是否有可能IOUtils.toByteArray正在耗尽您的输入流,以便在进行服务调用时无法从中读取数据?在这种情况下,stream.reset()将解决问题.
但是如果您只是上传文件(而不是任意的InputStream),您可以使用更简单的AmazonS3.putObject()形式获取文件,然后您根本不需要计算内容长度.
这将自动多次重试任何此类网络错误.您可以通过使用ClientConfiguration对象实例化它来调整客户端使用的重试次数.
| 归档时间: |
|
| 查看次数: |
15631 次 |
| 最近记录: |