Estoy tratando de obtener URL de descarga para archivos en el almacenamiento de Firebase.
const listRef = ref(storage, `photos/${route.params.id}`) onMounted( async () => { await listAll(listRef) .then((res) => { res.items.forEach( (item) => { console.log(item._location) }) }).catch((error) => { console.log(error) }) })Solo puedo encontrar la ruta en el objeto de respuesta, que no puedo usar como img src. ¿Cómo puedo obtener una URL de descarga adecuada?
Después de cargar los archivos, debe enviar una solicitud mediante la función getDownloadURL() a un almacenamiento para obtener la URL de descarga. Es debido a que la base de datos está agregando uploadBytes() a los archivos, por lo que existe la posibilidad de descargar archivos sin necesidad de iniciar sesión.
Aquí tienes un ejemplo de función en mecanografiado. Carga una matriz de archivos y devuelve una matriz de objetos: { name: string, fullPath: string, downloadURL: string } .
async function uploadFiles(path: string, files: File[], id: string) { if (!files.length) return [] const promises = [] const data = [] for (const item of files) { const storageRef = ref(storage, `${path}/${id}_${item.name}`) promises.push(uploadBytes(storageRef, item)) } const uploadResults = await Promise.all(promises) const downloadURLs = [] for (const item of uploadResults) { data.push({ fullPath: item.metadata.fullPath, downloadURL: '', name: '' }) downloadURLs.push(getDownloadURL(item.ref)) } const downloadURLsResult = await Promise.all(downloadURLs) for (var i = 0; i < downloadURLsResult.length; i++) { data[i].downloadURL = downloadURLsResult[i] data[i].name = files[i].name } return data }