1

InputStream を使用して AMazon S3 にファイルをアップロードしようとしています。私のコードは次のとおりで、Request Time out エラーが発生しています。ファイルのサイズは非常に小さく、約 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

これを見てください:Amazon s3アップロードファイルのタイムアウト

の後に接続をリセットします:

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

fis.reset();

s3Handler.putObject(新しい PutObjectRequest(バケット名、s3key、fis、メタデータ));

わたしにはできる

于 2014-03-11T15:33:28.220 に答える