gpt4 book ai didi

ios - 上传图片时 Firebase for iOS 错误 : object does not exist

转载 作者:行者123 更新时间:2023-11-28 08:06:31 24 4
gpt4 key购买 nike

我正在尝试将图像上传到 firebase 存储,但在从照片库中选择图像后并在单击“选择”按钮之前出现此错误:

“Creating an image format with an unknown type is an error”

点击“上传”按钮后我也得到“对象不存在”。

Error

这是我的代码:

import UIKit
import Firebase
import FirebaseAuth
import FirebaseStorage
import FirebaseDatabase

class uploadVC: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var imgPost: UIImageView!
@IBOutlet weak var txtPost: UITextView!
var uuid = NSUUID().uuidString

override func viewDidLoad() {
super.viewDidLoad()

imgPost.isUserInteractionEnabled = true
let gestureRecognizer = UITapGestureRecognizer(target: self,
action: #selector(uploadVC.selectImage))
imgPost.addGestureRecognizer(gestureRecognizer)
}

func selectImage() {
let picker = UIImagePickerController()
picker.delegate = self
picker.sourceType = .photoLibrary
picker.allowsEditing = true
present(picker, animated: true, completion: nil)
}

func imagePickerController(_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [String : Any]) {
imgPost.image = info[UIImagePickerControllerEditedImage] as?
UIImage
self.dismiss(animated: true, completion: nil)
}

@IBAction func btnUpload(_ sender: Any) {
let mediaFolder = Storage().reference().child("media")
if let data = UIImageJPEGRepresentation(imgPost.image!, 0.5) {
mediaFolder.child("\(uuid).jpg").putData(data, metadata: nil,
completion: { (metadata, error) in
if error != nil {
let alert = UIAlertController(title: "Error", message:
error?.localizedDescription, preferredStyle:
UIAlertControllerStyle.alert)
let ok = UIAlertAction(title: "OK", style:
UIAlertActionStyle.cancel, handler: nil)
alert.addAction(ok)
self.present(alert, animated: true, completion: nil)
} else {
print(metadata?.downloadURL()?.absoluteString)
}
})
}
}
}

最佳答案

我刚刚弄清楚它是如何工作的。根据 swift 3 的 Firebase 存储示例,存储首先需要身份验证。

引用:Firebase GitHub example

import UIKit
import Photos
import Firebase
import FirebaseAuth
import FirebaseStorage
import FirebaseDatabase

class uploadVC: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

@IBOutlet weak var imgPost: UIImageView!
@IBOutlet weak var txtPost: UITextView!

var uuid = NSUUID().uuidString
var storageRef: StorageReference!
var imageFile: URL?
var filePath: String?

override func viewDidLoad() {
super.viewDidLoad()

// [START configurestorage]
storageRef = Storage.storage().reference()
// [END configurestorage]

// [START storageauth]
// Using Cloud Storage for Firebase requires the user be authenticated. Here we are using
// anonymous authentication.
if Auth.auth().currentUser == nil {
Auth.auth().signInAnonymously(completion: { (user: User?, error: Error?) in
if let error = error {
let alert = UIAlertController(title: "Error", message: error.localizedDescription, preferredStyle: UIAlertControllerStyle.alert)
let ok = UIAlertAction(title: "OK", style: UIAlertActionStyle.cancel, handler: nil)
alert.addAction(ok)
self.present(alert, animated: true, completion: nil)
}
})
}
// [END storageauth]

imgPost.isUserInteractionEnabled = true
let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(uploadVC.selectImage))
imgPost.addGestureRecognizer(gestureRecognizer)
}

func selectImage() {
let picker = UIImagePickerController()
picker.delegate = self
picker.sourceType = .photoLibrary
picker.allowsEditing = true
present(picker, animated: true, completion: nil)
}

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
imgPost.image = info[UIImagePickerControllerEditedImage] as? UIImage
picker.dismiss(animated: true, completion:nil)
if #available(iOS 8.0, *), let referenceUrl = info[UIImagePickerControllerReferenceURL] as? URL {
let assets = PHAsset.fetchAssets(withALAssetURLs: [referenceUrl], options: nil)
let asset = assets.firstObject
asset?.requestContentEditingInput(with: nil, completionHandler: { (contentEditingInput, info) in
self.imageFile = contentEditingInput?.fullSizeImageURL
self.filePath = "media/" + "\(self.uuid).jpg"
})
}
}

@IBAction func btnUpload(_ sender: Any) {
// [START uploadimage]
self.storageRef.child(filePath!)
.putFile(from: imageFile!, metadata: nil) { (metadata, error) in
if let error = error {
let alert = UIAlertController(title: "Error", message: error.localizedDescription, preferredStyle: UIAlertControllerStyle.alert)
let ok = UIAlertAction(title: "OK", style: UIAlertActionStyle.cancel, handler: nil)
alert.addAction(ok)
self.present(alert, animated: true, completion: nil)
return
}
print(metadata?.downloadURL()?.absoluteString ?? "nothing")
}
// [END uploadimage]
}
}

关于ios - 上传图片时 Firebase for iOS 错误 : object does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44933589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com