1

我正在尝试使用 InputStream 在 AMazon S3 上上传文件,我的代码如下,我收到请求超时错误,文件的大小非常小,大约 1 MB。

ObjectMetadata metadata = new ObjectMetadata();
Long contentLength = Long.valueOf(IOUtils.toByteArray(fis).length);
metadata.setContentLength(contentLength);
try {

    s3Handler.putObject(new PutObjectRequest(bucketName, s3key, fis,metadata));
} catch (AmazonServiceException ase) {
    s3ExceptionHandler.processAmazonServiceException(ase);
} catch (AmazonClientException ace) {
    s3ExceptionHandler.processAmazonClientException(ace);
}

请求超时: -

Your socket connection to the server was not read from or written to within the timeout period. Idle connections will be closed.
Jan 30, 2013 10:15:42 AM javacode.S3ExceptionHandler processAmazonServiceException
SEVERE: HTTP Status Code: 400
Jan 30, 2013 10:15:42 AM javacode.S3ExceptionHandler processAmazonServiceException
SEVERE: AWS Error Code:   RequestTimeout

当我使用文件而不是它时它工作正常,inputstream但问题是我只有inputStream对象可用。

请帮忙。

4

1 回答 1

1

看这个:亚马逊 s3 上传文件超时

之后重置您的连接:

Long contentLength = Long.valueOf(IOUtils.toByteArray(fis).length);

fis.reset();

s3Handler.putObject(new PutObjectRequest(bucketName, s3key, fis,metadata));

这个对我有用

于 2014-03-11T15:33:28.220 回答