Ich habe den folgenden Arbeitscode, um ein Objekt aus Amazon S3 zu löschen
%Vor%Aber ich möchte alle Dateien unter einem Ordner mit Platzhalter ** löschen. Ich weiß, amazon s3 behandelt nicht "x / y / file.jpg" als einen Ordner y innerhalb von x, aber was ich erreichen möchte, ist durch Erwähnung von "x / y *" lösche alle nachfolgenden Objekte mit dem gleichen Präfix. Versucht amazon multi object delete
%Vor%Ich weiß, dass es in PHP leicht gemacht werden kann durch s3- & gt; delete_all_objects wie in diese Antwort . Ist die gleiche Aktion in GOlang möglich.
Leider hat das goamz-Paket keine ähnliche Methode wie die delete_all_objects
der PHP-Bibliothek.
Der Quellcode für PHP delete_all_objects
ist jedoch hier verfügbar (Quellansicht wechseln): Ссылка
Hier sind die wichtigen Codezeilen:
%Vor% Wie Sie sehen, wird der PHP-Code tatsächlich eine HTTP-Anfrage an den Bucket stellen, um zuerst alle Dateien zu erhalten, die mit PCRE_ALL
übereinstimmen, was definiert ist woanders als const PCRE_ALL = '/.*/i';
.
Sie können nur 1000 Dateien gleichzeitig löschen, also erstellt delete_all_objects
eine Stapelfunktion, um 1000 Dateien gleichzeitig zu löschen.
Sie müssen die gleiche Funktionalität in Ihrem Go-Programm erstellen, da das goamz-Paket dies noch nicht unterstützt. Zum Glück sollte es nur ein paar Zeilen Code sein, und Sie haben eine Anleitung aus der PHP-Bibliothek.
Es könnte sich lohnen, eine Pull-Anfrage für das goamz-Paket zu senden, sobald Sie fertig sind!