出现了一个问题,当我将应用程序中的图像上传到firebase存储时,它只是覆盖了我存储中的当前图像。例如,当我上传一张新照片时,我想要在我的存储中显示新照片和我已经在那里的旧照片。我们可以用下面的代码做点什么吗?谢谢你的帮助。
下面是我的代码:
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()
}
}发布于 2020-09-04 12:11:22
当你上传图片到Firebase时,你必须告诉它你想要保存图片的路径。在您的代码中,您将数据放入storage.reference()照片(“.child”)。如果你想存储多张图片,你需要修改“照片”路径,否则会覆盖该路径下的当前图片。我也推荐使用子文件夹。
我会调用类似的东西:
let imageName = "image1"
let folderName = "folder1"
let path = "\(folderName)/\(imageName)"
storage.reference(withPath: path).putData...https://stackoverflow.com/questions/63726027
复制相似问题