नहीं, आपको एक ही क्रिया में URL नहीं मिल सकता है लेकिन दो :)
सबसे पहले, आपको अपलोड करने से पहले फ़ाइल को सार्वजनिक करना पड़ सकता है क्योंकि यह URL प्राप्त करने के लिए कोई मतलब नहीं है जिसे कोई भी एक्सेस नहीं कर सकता है। जैसा कि माइकल एस्ट्रेको ने सुझाव दिया था, एसीएल सेट करके आप ऐसा कर सकते हैं। आप को फोन करके या तो संसाधन URL प्राप्त कर सकते हैं getResourceUrl
या 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");
नोट
1 : अलग है getResourceUrl
और getUrl
यह है कि getResourceUrl अपवाद होने पर अशक्त हो जाएगा।
नोट 2:
getUrl
विधि AmazonS3 इंटरफ़ेस में परिभाषित नहीं है। यदि आप मानक बिल्डर का उपयोग करते हैं तो आपको ऑब्जेक्ट को AmazonS3Client में डालना होगा।