Я работаю над api AWS и имею проблему с проверкой существующих объектов (FOLDERS).
Я прошел через этот вопрос, и это не помогает мне, потому что я использую последний обновленный SDK.
Я искал SDK и нашел this, который должен работать, т.е. doesObjectExist
, но я не могу найти определение функции в любом месте. Мой s3.php
файл не имеет этой функции. Здесь – мой класс S3.php.
Также я прочитал, что S3 не поддерживает структуры папок, но просто визуально делает его похожим на его сохраненный в папке из-за плоской файловой системы. Теперь, если мне нужно искать папку 1024x768
на S3, я только что проверил корень ведра? Я имею в виду, как это
$chkFileExist = $s3->doesObjectExist($bucketName,'1024x768');
Мне нужно проверить, существует ли папка и не создавать ее на лету динамически с помощью функций API. Если она существует, храните файлы там.
Мне нужна помощь в достижении этой функциональности. решение с их опытом.
Благодарим вас за внимание.
Возможно, вы захотите немного подумать над всей “плоской файловой системой”. Когда я впервые начал писать PHP для взаимодействия с S3 API, я ожидал, что сможет перебирать каталог и файлы в каждой папке. Это не так, как это работает!
Это от Райана Пармана, одного из ответов в вопросе, на который вы ссылались:
“S3 – это плоская файловая система, в ней нет папок, в них есть имена файлов с косой чертой. Некоторые инструменты просмотра S3 позволяют отображать концепцию” папок “в своем программном обеспечении, но они просто притворяются.
“/albums/Carcassonne-France/” возвращает false, потому что нет уникального объекта с этим именем. “
Если у вас есть объекты со следующими путями:
s3://myBucket/myFolder/taco.jpg
s3://myBucket/myFolder/jambox.jpg
Если вы проверяете существование объекта s3://myBucket/myFolder/
, он вернет false, так как нет объекта с этим конкретным именем.
Возможно, вам будет полезно узнать больше о том, почему вы хотите создать папку, если она не существует, но если вы хотите поместить объект в S3 в определенную “папку”, вы можете просто использовать putObject()
метод.
@Dan – это правильно. Тем не менее, было бы полезно проверить S3 StreamWrapper, который позволяет использовать встроенные функции файловой системы PHP с S3.
Я получил то же самое, используя ниже hack
. мы должны включить файл в каждую папку и можем проверить этот файл, поэтому, если этот файл существует, это означает, что путь к папке действителен. В моем случае файл, который я взял, был donotdelete.txt, так что любой просмотрщик s3 может понять, что этот файл не должен быть удален. Теперь проверьте этот файл с помощью функции getObjectInfo
. Например:
if($s3->getObjectInfo("bucketName","folder_name/donotdelete.txt")))
{
//Do Whatever you want to do if folder exists
}
else
{
//Do whatever you want to do if folder doesn't exist
}