首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将图像上传到firebase存储仅覆盖SwiftUI/Swift 5中的当前照片?

问将图像上传到firebase存储仅覆盖SwiftUI/Swift 5中的当前照片?
EN

Stack Overflow用户
提问于 2020-09-03 22:43:45
回答 1查看 381关注 0票数 0

出现了一个问题,当我将应用程序中的图像上传到firebase存储时,它只是覆盖了我存储中的当前图像。例如,当我上传一张新照片时,我想要在我的存储中显示新照片和我已经在那里的旧照片。我们可以用下面的代码做点什么吗?谢谢你的帮助。

下面是我的代码:

代码语言:javascript
复制
    struct UploadPhoto: View {
    @State var showActionSheet = false
    @State var showImagePicker = false
    
    @State var sourceType:UIImagePickerController.SourceType = .camera
    
    @State var upload_image:UIImage?
    @State var download_image:UIImage?
    
    @State private var showsAlert = false
     
    
    var body: some View {
       
        
      
        VStack {
            Text("Please upload your photos here!")
            HStack{
         
                if upload_image != nil {
                Image(uiImage: upload_image!)
                .resizable()
                .scaledToFit()
                    .frame(width:120, height:120, alignment: .center)
            } else {
                Image(systemName: "photo")
                .resizable()
                .scaledToFit()
                .frame(width:200, height:200, alignment: .center)
            }
 
            }.padding()
           
            Button(action: {
                self.showActionSheet = true
            }) {
                Text("Choose...")
            }.actionSheet(isPresented: $showActionSheet){
                ActionSheet(title: Text("Choose from camera or photo library..."), message: nil, buttons: [
                    //Button1
                    
                    .default(Text("Camera"), action: {
                        self.showImagePicker = true
                        self.sourceType = .camera
                    }),
                  
                    .default(Text("Photo Library"), action: {
                        self.showImagePicker = true
                        self.sourceType = .photoLibrary
                    }),
                    
                   
                    .cancel()
                    
                ])
            }.sheet(isPresented: $showImagePicker){
                imagePicker(image: self.$upload_image, showImagePicker: self.$showImagePicker, sourceType: self.sourceType)
                
            }
            
        
            Button(action: {
               
                if let thisImage = self.upload_image {
                    uploadImage(image: thisImage)
                 
                    
                } else {
                    
                    print("")
                }
                
                 
            }) {
              
                Text("Submit")
                 
                }
            }
 
        }
        
        
    }
    func uploadImage(image:UIImage){
        
        if let imageData = image.jpegData(compressionQuality: 1){
            
            let storage = Storage.storage()
            
            storage.reference().child("photo").putData(imageData, metadata: nil){
                (_, err) in
                if let err = err {
                 print("an error has occurred - \(err.localizedDescription)")
       }
                } else {
                     
                    print("Your photos have been successfully  
                }
            }
        } else {
            print("coldn't unwrap/case image to data")
        }
    }
 
 

struct UploadPhoto_Previews: PreviewProvider {
    static var previews: some View {
        UploadPhoto()
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-09-04 12:11:22

当你上传图片到Firebase时,你必须告诉它你想要保存图片的路径。在您的代码中,您将数据放入storage.reference()照片(“.child”)。如果你想存储多张图片,你需要修改“照片”路径,否则会覆盖该路径下的当前图片。我也推荐使用子文件夹。

我会调用类似的东西:

代码语言:javascript
复制
let imageName = "image1"
let folderName = "folder1"
let path = "\(folderName)/\(imageName)"
storage.reference(withPath: path).putData...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63726027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档