Wie zum speichern einer heruntergeladenen Datei-Objekt aus dem S3 in ein lokales Verzeichnis
Ich versuche, eine Datei zum herunterladen von S3 unter Verwendung von AWS SDK für Java und speichern der jeweiligen Datei in einem lokalen Verzeichnis in meinem PC.
Den code, den ich schrieb, der zum herunterladen des Objekts:
public void download(String key) {
S3Object obj=s3Client.getObject(new GetObjectRequest(bucketname,key));
}
Aber was ich wirklich wollen, zu tun ist, übergeben Sie den lokalen Pfad als parameter anstelle von Schlüssel und speichern Sie die heruntergeladene Datei obj in einem bestimmten Verzeichnis, z.B. /tmp/AWSStorage/in meiner linux-box.
Können Sie bitte deuten auf eine Art und Weise, es zu tun?
- Ich habe nicht verwendet diese API, aber von den docs scheint es, wie
obj.getDataInputStream()
zurück stream können Sie kopieren, um die Datei mit d.h.IOUtils.copy(is, new FileOutputStream(file));
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Zeile
S3Object obj=s3Client.getObject(new GetObjectRequest(bucketname,key));
bucketname ist die S3BucketName und Schlüssel ist der name des Objekts, es ist keine lokale Datei-Pfad.
Der Schlüssel ist die Kombination von common-prefix /objectname
d.h. wenn Sie die Datei gespeichert ist, an der Wurzel der Eimer dann nur der name des Objekts wird der Schlüssel sein, d.h. myfile.txt
aber wenn Sie Ihre Datei speichern möchten myfolder1/myfolder2/myfile.txt dann
meinordner1/myfolder ist dein common-Präfix und myfile.txt ist objectname.
Verwendet habe ich:
Es geklappt hat.
Es ist ein API direkt download-Datei auf den lokalen Pfad
Mit Java - >=1.6, Sie können direkt kopieren Sie die heruntergeladenen Dateien zu einem lokalen Verzeichnis ohne Problems der Datei Korruption. Überprüfen Sie den code:
Mit Java 1.6 und höher, können Sie direkt den Pfad in den Dateien.die kopieren-Funktion.
Können Sie
obj.getDataInputStream()
Datei zu erhalten. Und dannorg.apache.commons.io.IOUtils
copy
Methode zu kopieren.Dann können Sie eine der folgenden.
ODER