【问题标题】:SwiftUI: upload multiple images to FirebaseSwiftUI:将多个图像上传到 Firebase
【发布时间】:2021-07-03 08:23:37
【问题描述】:

目标:将 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

   
        }
    }
    


}


【问题讨论】:

    标签: firebase swiftui firebase-storage


    【解决方案1】:

    putData 的每次调用都会在您调用putData 的位置存储一个图像。

    因此,如果您想存储三个单独的图像,则必须在三个不同的 StorageReference 对象上调用 putData。然后,要获取三个下载 URL,您还要对三个 StorageReference 对象中的每一个调用 downloadURL

    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
    

    您可以通过创建自己的帮助函数来处理对 putDatadownloadUrl 的调用,只需一个闭包/回调,就可以稍微清理一下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-07
      • 2021-10-14
      • 1970-01-01
      • 2018-11-19
      • 2023-03-22
      • 2018-07-03
      • 1970-01-01
      • 2019-06-13
      相关资源
      最近更新 更多