Java >> Java-zelfstudie >  >> Java

AWS S3 Java SDK - Help bij het downloaden van bestanden

Hoewel de code in Mauricio's antwoord zal werken - en zijn punt over streams is natuurlijk correct - biedt Amazon een snellere manier om bestanden op te slaan in hun SDK. Ik weet niet of het in 2011 niet beschikbaar was of niet, maar nu wel.

AmazonS3Client s3Client = new AmazonS3Client(myCredentials);

File localFile = new File("localFilename");

ObjectMetadata object = s3Client.getObject(new GetObjectRequest("bucket", "s3FileName"), localFile);

In plaats van Reader en Writer klassen die je zou moeten gebruiken InputStream en OutputStream klassen:

InputStream reader = new BufferedInputStream(
   object.getObjectContent());
File file = new File("localFilename");      
OutputStream writer = new BufferedOutputStream(new FileOutputStream(file));

int read = -1;

while ( ( read = reader.read() ) != -1 ) {
    writer.write(read);
}

writer.flush();
writer.close();
reader.close();

Het antwoord van Eyals brengt je halverwege, maar het is niet zo duidelijk, dus ik zal het verduidelijken.

AmazonS3Client s3Client = new AmazonS3Client(myCredentials);

//This is where the downloaded file will be saved
File localFile = new File("localFilename");

//This returns an ObjectMetadata file but you don't have to use this if you don't want 
s3Client.getObject(new GetObjectRequest(bucketName, id.getId()), localFile);

//Now your file will have your image saved 
boolean success = localFile.exists() && localFile.canRead(); 

Java-tag