【问题标题】:Create a new image every time user takes a new photo in firebase storage每次用户在 Firebase 存储中拍摄新照片时创建一个新图像
【发布时间】:2021-02-10 23:54:28
【问题描述】:

在我的应用程序中,用户按下按钮拍摄照片,然后将其上传到 Firebase 存储,但每次我拍摄新照片时,旧照片都会消失,并用与旧照片相同的 url 字符串替换自己。每次同一个用户拍摄并上传照片时,我如何上传一张新照片?

这里是代码

let storage = Storage.storage().reference()
    guard  let imageData = ecoImage.jpegData(compressionQuality: 0.75) else {
        return
    }
    
    
        
    let metaData = StorageMetadata()
    metaData.contentType = "image/jpg"
    
    
    
        
        storage.child("pins/\("Eco1")").putData(imageData, metadata: metaData) { (meta, error) in
            if let err = error {
                print(err.localizedDescription)
            } else {
                storage.child("pins/\("Eco1")").downloadURL { (url, err) in
                    if let e = err {
                        print(e.localizedDescription)
                    } else {
                        let urlString = url?.absoluteString
                        doc.setData(["uid": uid, "pinLocation": ecoPin, "time": timeData, "url": urlString!]) { (error) in
                            if error != nil {
                                print(error?.localizedDescription)
                                return
                            } else {
                                print("Pin saved")
                            }
                        }
                    }
                }
            }
             print("Image sent")
        }

【问题讨论】:

  • 每次上传使用不同的路径?
  • 你每次都使用相同的名称/路径,所以它会覆盖之前的文件。

标签: ios swift firebase firebase-storage


【解决方案1】:

每次放置新照片时,您都需要生成随机文件名。 在您提供的代码中,在元数据之后,使用 UUID 声明变量。

let fname = UUID.init().uuidString.replacingOccurences(of: "-", with: "")

storage.child("pins/\(fname))...so on

这将在您每次上传时生成随机文件名,并且不会替换您之前的照片。

【讨论】:

    猜你喜欢
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多