Я пытаюсь удалить объекты, существующие в подпапке корзины S3. Ниже показано, что я пытаюсь сделать на С#:
string subBucketName = "TS-AP/";
var amazonS3Client = new AmazonS3Client(accessKeyId, secretAccessKey, RegionEndpoint.GetBySystemName(region));
amazonS3Client.DeleteObjectAsync(new Amazon.S3.Model.DeleteObjectRequest() { BucketName = BucketName, Key = subBucketName + "/" + d.StoredFileName});
В приведенном выше коде subBucketName — это подпапка внутри корзины S3, поэтому имя моей корзины — «Connect», а имя подпапки — «TS-AP». Файл, который я хочу удалить, существует в подпапке «TS-AP». когда я запускаю приведенный выше код, он не выдает никаких ошибок, он просто запускается, но я не вижу файлов, удаленных в корзине S3.
любая помощь будет оценена по достоинству.
Имя файла и имя подпапки точно такие же. Единственное отличие — одна косая черта. Не уверен, нужны ли мне 2 косые черты или одна косая черта. Я попробую два удара прямо сейчас. Имя подпапки выглядит следующим образом: «TS-AP/».
на самом деле имя подпапки — «TS-AP/».
Будет ли это работать, если вы жестко закодируете имя файла? Пример: { BucketName = BucketName, Key = "TS-AP/file1"});
Нет, это не так. Файл все еще существует в подпапке. Возможно ли отложенное удаление.
Двойная косая черта в вашем коде будет означать Key = 'TS-AP//file1'
, что не сработает. Удаление происходит мгновенно. Подпапки на самом деле не существуют в S3 — вместо этого ключ содержит полный путь к объекту. Вы на 100% уверены, что у вас есть подходящее ведро и ключ? Обратите внимание: если удаляемый объект не существует, ошибка не возникнет. Я предлагаю вам скопировать ключ из консоли S3 и вставить его как жестко закодированный на данный момент, чтобы убедиться в отсутствии ошибок при вводе.
Ты был прав. Это был ключевой вопрос. Я скопировал и вставил ключ, и все заработало! Мне бы хотелось получить ошибку в коде, тогда было бы проще. Спасибо за все что ты сделал для меня!
Двойная косая черта в вашем коде будет означать Key = 'TS-AP//file1'
, что не сработает.
Удаление происходит мгновенно.
Подпапки на самом деле не существуют в S3 — вместо этого ключ содержит полный путь к объекту.
Вы на 100% уверены, что у вас есть подходящее ведро и ключ? Обратите внимание: если удаляемый объект не существует, ошибка не возникнет.
Я предлагаю вам скопировать ключ из консоли S3 и вставить его как жестко закодированный на данный момент, чтобы убедиться в отсутствии ошибок при вводе.
Спасибо. Я скопировал и вставил ключ, и все заработало!
Если вы добавите оператор отладки для печати
subBucketName + "/" + d.StoredFileName
, будет ли он точно соответствовать ключу объекта, как показано в консоли управления S3?