我正在尝试获取通过 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/