【发布时间】:2020-12-22 19:59:06
【问题描述】:
遇到一个问题,当我将应用中的图像上传到 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()
}
}
【问题讨论】:
标签: swift firebase swiftui firebase-storage