swift - 从 UIImagePickerController 获取 NSURL

标签 swift firebase swift2 nsurl firebase-realtime-database

我正在尝试获取通过 imagePickerController 选择的图像的文件路径,以便将文件上传到 Firebase 存储。

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {

    mediaUploadView.image = info[UIImagePickerControllerOriginalImage] as? UIImage

    let localUrl: NSURL = (info[UIImagePickerControllerReferenceURL] as! NSURL)
    print(localUrl)

    let localFile: NSURL = localUrl
    let mediaRef = storageRef.child("media")

    let uploadTask = mediaRef.putFile(localUrl, metadata: nil) { metadata, error in
        if (error != nil) {
        } else {
            let downloadURL = metadata!.downloadURL
        }
    }


    self.dismissViewControllerAnimated(true, completion: nil)

}

输出如下:

assets-library://asset/asset.JPG?id=C224DA06-6B7B-4BE2-8F5E-2EC7BC8B0526&ext=JPG
Body file is unreachable: /asset.JPG
Error Domain=NSCocoaErrorDomain Code=4 "The file doesn’t exist."

它抓取了我认为是 NSURL 的内容,但随后无法找到它进行上传。

我试图在堆栈“How do I get Image reference and upload image to Firebase?”上解决这个类似的问题,但输出然后简单地返回 nil。 任何帮助都会很棒,谢谢!

最佳答案

我无法让 info[UIImagePickerControllerOriginalImage] 正常工作。我必须这样做:

let assets = PHAsset.fetchAssetsWithALAssetURLs([localUrl], options: nil)
let asset = assets.firstObject
asset?.requestContentEditingInputWithOptions(nil, completionHandler: { (contentEditingInput, info) in
    let imageFile = contentEditingInput?.fullSizeImageURL
    // now call putFile with imageFile instead of localURL

关于swift - 从 UIImagePickerController 获取 NSURL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37670009/

相关文章:

swift - 即使刷新文本,NSTextView 链接仍保持 "baked"

ios - SwiftUI 中另一个按钮内的按钮

ios - 无法使用类型的参数列表调用 'bindToPort'

ios - Firebase/Swift - 从 Firebase 输出数据出错

flutter - 当项目在 android studio 中运行时,我的 flutter 应用程序出现问题

ios - 从 TextBox 到 Widget 的文本?

ios - 更改默认电子邮件应用程序会影响 MFMailComposeViewController 的使用吗?

android - FirebaseCloudMessaging : FirebaseInstanceId background sync failed - SERVICE_NOT_AVAILABLE

swift - NSDateComponents 语法的差异?

ios - Swift 1.2 到 2.0 的转换 - Guard 与 if let