firebase - SwiftUI:将多个图像上传到 Firebase
问题描述
目标:将 3 张图片从 SwiftUI 应用上传到 Firebase,每张都有不同的 URL。
问题:我只上传了 1 个。
我尝试过的(但没有奏效)......:
storagePostRef.putData(image1, image2, image3, metadata: metadata) { (storageMetadata, error) in
完整功能如下:
static func savePostPhoto(
//id
userId: String,
image1: Data,
image2: Data,
image3: Data,
// imagesArray : [Data],
metadata: StorageMetadata,
storagePostRef: StorageReference,
onSuccess: @escaping() -> Void,
onError: @escaping(_ errorMessage: String) -> Void)
{
let arrayOfImages : [Data] = [image1, image2, image3]
//image storage
storagePostRef.putData(image1, metadata: metadata) { (storageMetadata, error) in
if error != nil {
onError(error!.localizedDescription)
return
}
//image URL
storagePostRef.downloadURL { (url, error) in
let image1 = url?.absoluteString
let image2 = url?.absoluteString
let image3 = url?.absoluteString
}
}
}
解决方案
每次调用都会putData
在您调用的位置存储一个图像putData
。
因此,如果要存储三个单独的图像,则必须调用putData
三个不同的StorageReference
对象。然后,要获取三个下载 URL,您还需要调用downloadURL
这三个StorageReference
对象中的每一个。
storagePostRef1.putData(image1, metadata: metadata) { (storageMetadata, error) in
storagePostRef1.downloadURL { (url1, error) in
let image1 = url?.absoluteString storagePostRef2.putData(image2, metadata: metadata) { (storageMetadata, error) in
storagePostRef2.downloadURL { (url2, error) in
storagePostRef3.putData(image3, metadata: metadata) { (storageMetadata, error) in
storagePostRef3.downloadURL { (url3, error) in
您可以通过创建自己的帮助函数来处理对单个闭包/回调的调用putData
并使用它来清理它。downloadUrl
推荐阅读
- python-3.x - 当我尝试使用 cv2.imshow() 打开图像时,会弹出一个空白图像窗口
- ios - JSON解码不填充表视图
- tfs - 如何配置 Team Foundation Server 2015 以强制所有工作区仅限本地?
- laravel - 在 apache 虚拟主机中部署多个 laravel 项目
- python - 只需要获取没有索引和数据类型Python的模式值
- python - 从 Python 中的不同目录导入
- php - 无法将 PayPal\Api\Amount 类型的对象用作数组
- blackberry - 无法创建调试令牌或签名栏文件
- go - 将字符串解析为时间戳正在切断字符串的年份部分
- flutter - 如何在 Flutter 中为 Modal Bottome Sheet 实现模糊背景?