早速サンプルソース。
public void upload() {
//AmazonS3Clientを作成
final BasicAWSCredentials credentials =
new BasicAWSCredentials("アクセスキー", "シークレットキー");
final AmazonS3Client s3Client = new AmazonS3Client(credentials);
// アップロード対象のオブジェクトを作成
// 第一引数:アップロード先のバケット名
// 第二引数:アップロード後のファイル名
// 第三引数:アップロード対象のFileオブジェクト
final PutObjectRequest por =
new PutObjectRequest("バケット名", "ファイル名", new File("ファイルパス"));
// アップロード対象ファイルの権限を設定する
// 以下のようにすると、誰でもHTTPでファイルを参照することができるようになる
por.setCannedAcl(CannedAccessControlList.PublicRead);
try {
// アップロード
s3Client.putObject(por);
} catch(final AmazonClientException e) {
e.printStackTrace();
}
}
ちなみに、PutObjectRequestのコンストラクタの第二引数のファイル名に"/"を入れると、
AWS側ではそれを、特別な扱いをしてくれることでAWS Management Consoleで見た時に、
ディレクトリであるかのように表示してくれます。
ただし、実際にはあくまで"/"がファイル名に含まれているだけの単一のファイルになっています。