Tidak, Anda tidak bisa mendapatkan URL dalam satu tindakan tetapi dua :)
Pertama-tama, Anda mungkin harus membuat file menjadi publik sebelum mengunggah karena tidak masuk akal untuk mendapatkan URL yang tidak dapat diakses oleh siapa pun. Anda dapat melakukannya dengan menyetel ACL seperti yang disarankan Michael Astreiko. Anda bisa mendapatkan URL sumber daya baik dengan menelepon getResourceUrl
atau getUrl
.
AmazonS3Client s3Client = (AmazonS3Client)AmazonS3ClientBuilder.defaultClient();
s3Client.putObject(new PutObjectRequest("your-bucket", "some-path/some-key.jpg", new File("somePath/someKey.jpg")).withCannedAcl(CannedAccessControlList.PublicRead))
s3Client.getResourceUrl("your-bucket", "some-path/some-key.jpg");
Note1:
Perbedaan antara getResourceUrl
dan getUrl
adalah bahwa getResourceUrl akan mengembalikan null saat pengecualian terjadi.
Note2:
getUrl
metode tidak ditentukan di antarmuka AmazonS3. Anda harus mentransmisikan objek ke AmazonS3Client jika Anda menggunakan pembuat standar.