Я работаю над загрузкой изображений, все отлично работает, но у меня есть 100 изображений, и я хотел бы показать все из них в моем View
, так как я получаю полный список изображений в папке, я не могу найти API для эта работа.
Как получить список всех файлов в облачном хранилище в приложении Firebase?
Ответ 1
Начиная с Firebase SDK для JavaScript версии 6.1, iOS версии 6.4 и Android версии 18.1 есть метод для вывода списка файлов.
Пока что документация немного скудная, поэтому я рекомендую проверить ответ Росарио для деталей.
Предыдущий ответ, так как этот подход все еще может быть полезен время от времени:
В настоящее время в Firebase SDK нет вызова API для получения списка всех файлов в папке Cloud Storage из приложения. Если вам нужна такая функциональность, вы должны хранить метаданные файлов (например, URL-адреса для загрузки) в месте, где вы можете их перечислить. Firebase Realtime Database и Cloud Firestore идеально подходят для этого и позволяют вам также легко обмениваться URL-адресами с другими.
Вы можете найти хороший (но несколько сложный) пример этого в нашем примере приложения FriendlyPix. Соответствующий код для веб-версии находится здесь, но есть также версии для iOS и Android.
Ответ 2
С марта 2017 года: благодаря добавлению облачных функций Firebase и более глубокой интеграции Firebase с Google Cloud это стало возможным.
С Cloud Functions вы можете использовать пакет Google Cloud Node для выполнения эпических операций в облачном хранилище. Ниже приведен пример, который получает все URL-адреса файлов в массив из облачного хранилища. Эта функция будет срабатывать каждый раз, когда что-то сохраняется в облачном хранилище Google.
Примечание 1: Это довольно дорогая вычислительная операция, поскольку она должна циклически проходить по всем файлам в папке/папке.
Примечание 2: я написал это просто в качестве примера, не вдаваясь в подробности в обещания и т.д. Просто для того, чтобы дать идею.
const functions = require('firebase-functions');
const gcs = require('@google-cloud/storage')();
// let trigger this function with a file upload to google cloud storage
exports.fileUploaded = functions.storage.object().onChange(event => {
const object = event.data; // the object that was just uploaded
const bucket = gcs.bucket(object.bucket);
const signedUrlConfig = { action: 'read', expires: '03-17-2025' }; // this is a signed url configuration object
var fileURLs = []; // array to hold all file urls
// this is just for the sake of this example. Ideally you should get the path from the object that is uploaded :)
const folderPath = "a/path/you/want/its/folder/size/calculated";
bucket.getFiles({ prefix: folderPath }, function(err, files) {
// files = array of file objects
// not the contents of these files, we're not downloading the files.
files.forEach(function(file) {
file.getSignedUrl(signedUrlConfig, function(err, fileURL) {
console.log(fileURL);
fileURLs.push(fileURL);
});
});
});
});
Я надеюсь, что это даст вам общее представление. Чтобы получить лучшие примеры облачных функций, посмотрите репозиторий Google Github, полный примеров облачных функций для Firebase. Также ознакомьтесь с их документацией по API Google Cloud Node
Ответ 3
По состоянию на май 2019 года версии 6.1.0 Firebase SDK для облачного хранилища теперь поддерживает перечисление всех объектов из корзины. Вам просто нужно вызвать listAll()
в Reference
:
// Since you mentioned your images are in a folder,
// we'll create a Reference to that folder:
var storageRef = firebase.storage().ref("your_folder");
// Now we get the references of these images
storageRef.listAll().then(function(result) {
result.items.forEach(function(imageRef) {
// And finally display them
displayImage(imageRef);
});
}).catch(function(error) {
// Handle any errors
});
function displayImage(imageRef) {
imageRef.getDownloadURL().then(function(url) {
// TODO: Display the image on the UI
}).catch(function(error) {
// Handle any errors
});
}
Пожалуйста, обратите внимание, что для использования этой функции вы должны подписаться на версию 2 Правил безопасности, что можно сделать, сделав rules_version = '2';
первой строкой ваши правила безопасности:
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
Я бы порекомендовал проверить документы для дальнейшего ознакомления.
Кроме того, согласно setup, на шаге 5 этот сценарий не разрешен для Node.js
, поскольку require("firebase/app");
не вернет firebase.storage()
в качестве функции. Это достигается только с помощью import * as firebase from 'firebase/app';
.
Ответ 4
Поскольку в списке нет языков, я отвечу на это в Swift. Мы настоятельно рекомендуем использовать Firebase Storage и Firebase Realtime Database для выполнения списков загрузок:
Общий:
// Firebase services
var database: FIRDatabase!
var storage: FIRStorage!
...
// Initialize Database, Auth, Storage
database = FIRDatabase.database()
storage = FIRStorage.storage()
...
// Initialize an array for your pictures
var picArray: [UIImage]()
Загрузить:
let fileData = NSData() // get data...
let storageRef = storage.reference().child("myFiles/myFile")
storageRef.putData(fileData).observeStatus(.Success) { (snapshot) in
// When the image has successfully uploaded, we get it download URL
let downloadURL = snapshot.metadata?.downloadURL()?.absoluteString
// Write the download URL to the Realtime Database
let dbRef = database.reference().child("myFiles/myFile")
dbRef.setValue(downloadURL)
}
Скачать:
let dbRef = database.reference().child("myFiles")
dbRef.observeEventType(.ChildAdded, withBlock: { (snapshot) in
// Get download URL from snapshot
let downloadURL = snapshot.value() as! String
// Create a storage reference from the URL
let storageRef = storage.referenceFromURL(downloadURL)
// Download the data, assuming a max size of 1MB (you can change this as necessary)
storageRef.dataWithMaxSize(1 * 1024 * 1024) { (data, error) -> Void in
// Create a UIImage, add it to the array
let pic = UIImage(data: data)
picArray.append(pic)
})
})
Для получения дополнительной информации см. Zero to App: Develop with Firebase и связанный исходный код, для практического примера того, как это сделать.
Ответ 5
Обходным путем может быть создание файла (т.е. list.txt) без ничего внутри, в этом файле вы можете установить настраиваемые метаданные (это Map < String, String > ) со списком всех URL-адресов файлов.
Итак, если вам нужно downlaod всех файлов в fodler, вы сначала загружаете метаданные из файла list.txt, затем выполняете итерацию по пользовательским данным и загружаете все файлы с URL-адресами на карте.
Ответ 6
Я также столкнулся с этой проблемой, когда работал над моим проектом. Я действительно хочу, чтобы они предоставили метод end api. Во всяком случае, вот как я это сделал: Когда вы загружаете изображение в хранилище Firebase, создайте объект и передайте этот объект в базу данных Firebase одновременно. Этот объект содержит URI загрузки изображения.
trailsRef.putFile(file).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri downloadUri = taskSnapshot.getDownloadUrl();
DatabaseReference myRef = database.getReference().child("trails").child(trail.getUnique_id()).push();
Image img = new Image(trail.getUnique_id(), downloadUri.toString());
myRef.setValue(img);
}
});
Позже, когда вы хотите загружать изображения из папки, вы просто перебираете файлы в этой папке. Эта папка имеет то же имя, что и "папка" в хранилище Firebase, но вы можете назвать их, как хотите. Я помещаю их в отдельный поток.
@Override
protected List<Image> doInBackground(Trail... params) {
String trialId = params[0].getUnique_id();
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("trails").child(trialId).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
images = new ArrayList<>();
Iterator<DataSnapshot> iter = dataSnapshot.getChildren().iterator();
while (iter.hasNext()) {
Image img = iter.next().getValue(Image.class);
images.add(img);
}
isFinished = true;
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Теперь у меня есть список объектов, содержащих URI для каждого изображения, я могу делать все, что я хочу с ними делать. Чтобы загрузить их в imageView, я создал другой поток.
@Override
protected List<Bitmap> doInBackground(List<Image>... params) {
List<Bitmap> bitmaps = new ArrayList<>();
for (int i = 0; i < params[0].size(); i++) {
try {
URL url = new URL(params[0].get(i).getImgUrl());
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
bitmaps.add(bmp);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return bitmaps;
}
Это возвращает список растровых изображений, когда он заканчивается, я просто привязываю их к ImageView в основном действии. Ниже методы @Override, потому что у меня созданы интерфейсы и прослушивание для завершения в других потоках.
@Override
public void processFinishForBitmap(List<Bitmap> bitmaps) {
List<ImageView> imageViews = new ArrayList<>();
View v;
for (int i = 0; i < bitmaps.size(); i++) {
v = mInflater.inflate(R.layout.gallery_item, mGallery, false);
imageViews.add((ImageView) v.findViewById(R.id.id_index_gallery_item_image));
imageViews.get(i).setImageBitmap(bitmaps.get(i));
mGallery.addView(v);
}
}
Обратите внимание, что мне нужно дождаться возврата первого изображения, а затем вызвать поток для работы с Bitmap списка. В этом случае изображение содержит URI.
@Override
public void processFinish(List<Image> results) {
Log.e(TAG, "get back " + results.size());
LoadImageFromUrlTask loadImageFromUrlTask = new LoadImageFromUrlTask();
loadImageFromUrlTask.delegate = this;
loadImageFromUrlTask.execute(results);
}
Надеюсь, кто-то сочтет это полезным. Он также будет служить линией гильдии для меня и в будущем.
Ответ 7
Еще один способ добавить изображение в базу данных с помощью облачной функции, чтобы отслеживать каждое загруженное изображение и сохранять его в базе данных.
exports.fileUploaded = functions.storage.object().onChange(event => {
const object = event.data; // the object that was just uploaded
const contentType = event.data.contentType; // This is the image Mimme type\
// Exit if this is triggered on a file that is not an image.
if (!contentType.startsWith('image/')) {
console.log('This is not an image.');
return null;
}
// Get the Signed URLs for the thumbnail and original image.
const config = {
action: 'read',
expires: '03-01-2500'
};
const bucket = gcs.bucket(event.data.bucket);
const filePath = event.data.name;
const file = bucket.file(filePath);
file.getSignedUrl(config, function(err, fileURL) {
console.log(fileURL);
admin.database().ref('images').push({
src: fileURL
});
});
});
Полный код здесь: https://gist.github.com/bossly/fb03686f2cb1699c2717a0359880cf84
Ответ 8
Для узла JS я использовал этот код
const Storage = require('@google-cloud/storage');
const storage = new Storage({projectId: 'PROJECT_ID', keyFilename: 'D:\\keyFileName.json'});
const bucket = storage.bucket('project.appspot.com'); //gs://project.appspot.com
bucket.getFiles().then(results => {
const files = results[0];
console.log('Total files:', files.length);
files.forEach(file => {
file.download({destination: 'D:\\${file}'}).catch(error => console.log('Error: ', error))
});
}).catch(err => {
console.error('ERROR:', err);
});
Ответ 9
Для этого с помощью JS
Вы можете добавить их непосредственно в свой контейнер div, или вы можете нажать их в массив. Ниже показано, как добавить их в свой div.
1) Когда вы храните свои изображения в хранилище, создайте ссылку на изображение в базе данных firebase со следующей структурой
/images/(imageName){
description: "" ,
imageSrc : (imageSource)
}
2) Когда вы загружаете документ, вытащите все URL-адреса источника изображения из базы данных, а не в хранилище, с помощью следующего кода
$(document).ready(function(){
var query = firebase.database().ref('images/').orderByKey();
query.once("value").then(function(snapshot){
snapshot.forEach(function(childSnapshot){
var imageName = childSnapshot.key;
var childData = childSnapshot.val();
var imageSource = childData.url;
$('#imageGallery').append("<div><img src='"+imageSource+"'/></div>");
})
})
});
Ответ 10
Вы можете перечислить файлы в каталоге хранилища Firebase с помощью метода listAll(). Чтобы использовать этот метод, необходимо реализовать эту версию хранилища Firebase. 'Com.google.firebase: firebase-хранения: 18.1.1'
https://firebase.google.com/docs/storage/android/list-files
Имейте в виду, что обновите Правила безопасности до версии 2.
Ответ 11
Вы можете использовать следующий код. Здесь я загружаю изображение в хранилище firebase, а затем я сохраняю URL-адрес загрузки изображения в базу данных firebase.
//getting the storage reference
StorageReference sRef = storageReference.child(Constants.STORAGE_PATH_UPLOADS + System.currentTimeMillis() + "." + getFileExtension(filePath));
//adding the file to reference
sRef.putFile(filePath)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
//dismissing the progress dialog
progressDialog.dismiss();
//displaying success toast
Toast.makeText(getApplicationContext(), "File Uploaded ", Toast.LENGTH_LONG).show();
//creating the upload object to store uploaded image details
Upload upload = new Upload(editTextName.getText().toString().trim(), taskSnapshot.getDownloadUrl().toString());
//adding an upload to firebase database
String uploadId = mDatabase.push().getKey();
mDatabase.child(uploadId).setValue(upload);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), exception.getMessage(), Toast.LENGTH_LONG).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
//displaying the upload progress
double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
progressDialog.setMessage("Uploaded " + ((int) progress) + "%...");
}
});
Теперь, чтобы получить все изображения, хранящиеся в базе данных firebase, вы можете использовать
//adding an event listener to fetch values
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
//dismissing the progress dialog
progressDialog.dismiss();
//iterating through all the values in database
for (DataSnapshot postSnapshot : snapshot.getChildren()) {
Upload upload = postSnapshot.getValue(Upload.class);
uploads.add(upload);
}
//creating adapter
adapter = new MyAdapter(getApplicationContext(), uploads);
//adding adapter to recyclerview
recyclerView.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
progressDialog.dismiss();
}
});
За дополнительной информацией вы можете увидеть мое сообщение Пример хранения Firebase.
Ответ 12
Поэтому у меня был проект, который требовал загрузки ресурсов из хранилища Firebase, поэтому мне пришлось решать эту проблему самостоятельно. Вот как:
1- Во-первых, создайте модель данных, например, для class Choice{}
, в этом классе определяется строковая переменная с именем image Name, поэтому она будет такой
class Choice {
.....
String imageName;
}
2- из базы данных/базы данных firebase, перейдите и жестко закодируйте имена изображений для объектов, поэтому, если у вас есть имя изображения с именем Apple.png, создайте объект, который будет
Choice myChoice = new Choice(...,....,"Apple.png");
3- Теперь, получите ссылку для активов в вашем хранилище Firebase, которое будет примерно таким
gs://your-project-name.appspot.com/
4- наконец, инициализируйте ссылку на хранилище Firebase и начните получать файлы с помощью такого цикла
storageRef = storage.getReferenceFromUrl(firebaseRefURL).child(imagePath);
File localFile = File.createTempFile("images", "png");
storageRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
@Override
public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
//Dismiss Progress Dialog\\
}
5- что это
Ответ 13
На самом деле это возможно, но только с API Google Cloud вместо одного из Firebase. Это потому, что Firebase Storage - это хранилище облачного хранилища Google, к которому легко получить доступ с помощью API Google Cloud, однако вам нужно использовать OAuth для аутентификации вместо Firebase.
Ответ 14
Проверьте мой ответ, я нашел простой способ загрузить несколько файлов и получить их соответствующие URL-адреса здесь:
Ответ 15
#In Python
import firebase_admin
from firebase_admin import credentials
from firebase_admin import storage
import datetime
import urllib.request
def image_download(url, name_img) :
urllib.request.urlretrieve(url, name_img)
cred = credentials.Certificate("credentials.json")
# Initialize the app with a service account, granting admin privileges
app = firebase_admin.initialize_app(cred, {
'storageBucket': 'YOURSTORAGEBUCKETNAME.appspot.com',
})
url_img = "gs://YOURSTORAGEBUCKETNAME.appspot.com/"
bucket_1 = storage.bucket(app=app)
image_urls = []
for blob in bucket_1.list_blobs():
name = str(blob.name)
#print(name)
blob_img = bucket_1.blob(name)
X_url = blob_img.generate_signed_url(datetime.timedelta(seconds = 300), method='GET')
#print(X_url)
image_urls.append(X_url)
PATH = ['Where you want to save the image']
for path in PATH:
i = 1
for url in image_urls:
name_img = str(path + "image"+str(i)+".jpg")
image_download(url, name_img)
i+=1
Ответ 16
Я столкнулся с той же проблемой, моя еще сложнее.
Администратор загрузит аудио и pdf файлы в хранилище:
-
Аудио/сезон1, сезон2.../класс1, класс 2/.mp3 файлы
-
книги /.pdf файлы
Android-приложение должно получить список вложенных папок и файлов.
Решение заключается в том, чтобы перехватить событие загрузки в хранилище и создать ту же структуру в хранилище, используя облачную функцию.
Шаг 1: Создайте вручную коллекцию "Storage" и документацию "Audios/Books" в FireStore
Шаг 2: Настройка облачной функции
Может занять около 15 минут: https://www.youtube.com/watch?v=DYfP-UIKxH0&list=PLl-K7zZEsYLkPZHe41m4jfAxUi0JjLgSM&index=1
Шаг 3: поймать событие загрузки с помощью облачной функции
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp(functions.config().firebase);
const path = require('path');
export const onFileUpload = functions.storage.object().onFinalize(async (object) => {
let filePath = object.name; // File path in the bucket.
const contentType = object.contentType; // File content type.
const metageneration = object.metageneration; // Number of times metadata has been generated. New objects have a value of 1.
if (metageneration !== "1") return;
// Get the file name.
const fileName = path.basename(filePath);
filePath = filePath.substring(0, filePath.length - 1);
console.log('contentType ' + contentType);
console.log('fileName ' + fileName);
console.log('filePath ' + filePath);
console.log('path.dirname(filePath) ' + path.dirname(filePath));
filePath = path.dirname(filePath);
const pathArray = filePath.split("/");
let ref = '';
for (const item of pathArray) {
if (ref.length === 0) {
ref = item;
}
else {
ref = ref.concat('/sub/').concat(item);
}
}
ref = 'storage/'.concat(ref).concat('/sub')
admin.firestore().collection(ref).doc(fileName).create({})
.then(result => {console.log('onFileUpload:updated')})
.catch(error => {
console.log(error);
});
});
Шаг 4: Получить список папок/файлов в приложении Android с помощью FireStore
private static final String STORAGE_DOC = "storage/";
public static void getMediaCollection(String path, OnCompleteListener onCompleteListener) {
String[] pathArray = path.split("/");
String doc = null;
for (String item : pathArray) {
if (TextUtils.isEmpty(doc)) doc = STORAGE_DOC.concat(item);
else doc = doc.concat("/sub/").concat(item);
}
doc = doc.concat("/sub");
getFirestore().collection(doc).get().addOnCompleteListener(onCompleteListener);
}
Шаг 5: Получить ссылку для скачивания
public static void downloadMediaFile(String path, OnCompleteListener<Uri> onCompleteListener) {
getStorage().getReference().child(path).getDownloadUrl().addOnCompleteListener(onCompleteListener);
}
Заметка
Мы должны поместить "sub" коллекцию в каждый элемент, так как Firestore не поддерживает получение списка коллекции.
Мне понадобилось 3 дня, чтобы найти решение, надеюсь, это займет у вас не более 3 часов.
Приветствия.
Ответ 17
Расширение ответа Росарио Перейры Фернандеса на, для решения JavaScript:
- Установите firebase на свой компьютер
npm install -g firebase-tools
- При инициализации firebase установите
JavaScript
в качестве языка по умолчанию - В корневой папке созданного проекта выполните npm installs
npm install --save firebase
npm install @google-cloud/storage
npm install @google-cloud/firestore
... <any other dependency needed>
- Добавьте не-стандартные зависимости в ваш проект, например,
"firebase": "^6.3.3",
"@google-cloud/storage": "^3.0.3"
функции /package.json
{
"name": "functions",
"description": "Cloud Functions for Firebase",
"scripts": {
"lint": "eslint .",
"serve": "firebase serve --only functions",
"shell": "firebase functions:shell",
"start": "npm run shell",
"deploy": "firebase deploy --only functions",
"logs": "firebase functions:log"
},
"engines": {
"node": "10"
},
"dependencies": {
"@google-cloud/storage": "^3.0.3",
"firebase": "^6.3.3",
"firebase-admin": "^8.0.0",
"firebase-functions": "^3.1.0"
},
"devDependencies": {
"eslint": "^5.12.0",
"eslint-plugin-promise": "^4.0.1",
"firebase-functions-test": "^0.1.6"
},
"private": true
}
- Создать вид функции
listAll
index.js
var serviceAccount = require("./key.json");
const functions = require('firebase-functions');
const images = require('./images.js');
var admin = require("firebase-admin");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://<my_project>.firebaseio.com"
});
const bucket = admin.storage().bucket('<my_bucket>.appspot.com')
exports.getImages = functions.https.onRequest((request, response) => {
images.getImages(bucket)
.then(urls => response.status(200).send({ data: { urls } }))
.catch(err => console.error(err));
})
images.js
module.exports = {
getImages
}
const query = {
directory: 'images'
};
function getImages(bucket) {
return bucket.getFiles(query)
.then(response => getUrls(response))
.catch(err => console.error(err));
}
function getUrls(response) {
const promises = []
response.forEach( files => {
files.forEach (file => {
promises.push(getSignedUrl(file));
});
});
return Promise.all(promises).then(result => getParsedUrls(result));
}
function getSignedUrl(file) {
return file.getSignedUrl({
action: 'read',
expires: '09-01-2019'
})
}
function getParsedUrls(result) {
return JSON.stringify(result.map(mediaLink => createMedia(mediaLink)));
}
function createMedia(mediaLink) {
const reference = {};
reference.mediaLink = mediaLink[0];
return reference;
}
- Выполните
firebase deploy
, чтобы загрузить свою облачную функцию - Вызовите свою пользовательскую функцию из своего приложения
build.gradle
dependencies {
...
implementation 'com.google.firebase:firebase-functions:18.1.0'
...
}
класс Котлин
private val functions = FirebaseFunctions.getInstance()
val cloudFunction = functions.getHttpsCallable("getImages")
cloudFunction.call().addOnSuccessListener {...}
Что касается дальнейшего развития этой функции, я столкнулся с некоторыми проблемами, которые могут найти здесь.
Ответ 18
Для Android лучше всего использовать FirebaseUI и Glide.
Вы должны добавить это в свой gradle/app, чтобы получить библиотеку. Обратите внимание, что на нем уже есть Glide!
implementation 'com.firebaseui:firebase-ui-storage:4.1.0'
И тогда в вашем коде использовать
// Reference to an image file in Cloud Storage
StorageReference storageReference = FirebaseStorage.getInstance().getReference();
// ImageView in your Activity
ImageView imageView = findViewById(R.id.imageView);
// Download directly from StorageReference using Glide
// (See MyAppGlideModule for Loader registration)
GlideApp.with(this /* context */)
.load(storageReference)
.into(imageView);
Ответ 19
вы можете посмотреть this. могут быть реализованы с использованием облачного хранилища api.
Пример: GET https://www.googleapis.com/storage/v1/b/{BUCKET}/o? Prefix = images% 2Ftemp & key = {YOUR_API_KEY}
это приведет ко всем объектам, хранящимся в каталоге "images/temp" в формате json.