所以已经开始了一些其他线程,因为人们对此有麻烦。像这样一个:从 UIImagePickerController 获取 NSURL和这个: Firebase 存储上传在模拟器中有效,但在 iPhone 上无效
我正在尝试遵循本教程: https ://firebase.google.com/docs/storage/ios/upload-files#upload_from_a_local_file
我的视频上传工作,而不是图像。
我的视频代码很简单:
if mediaType.isEqualToString(kUTTypeMovie as String) {
let videoURL = info[UIImagePickerControllerMediaURL] as? NSURL
fileToUploadURL = videoURL!
}
但我的图像代码不起作用。这就是我的结果:
let imageUrl = info["UIImagePickerControllerReferenceURL"] as? NSURL
let assets = PHAsset.fetchAssetsWithALAssetURLs([imageUrl!], options: nil)
let asset = assets.firstObject
asset?.requestContentEditingInputWithOptions(nil, completionHandler: { (contentEditingInput, info) in
let imageFile = contentEditingInput?.fullSizeImageURL
// now call putFile with imageFile instead of imageUrl
self.fileToUploadURL = imageFile
})
似乎无论我做什么,我都会遇到错误。这是我当前的错误
2016-06-25 12:45:23.695 Chain[4187:1957121] Body file is unreachable: /var/mobile/Media/DCIM/100APPLE/IMG_0027.JPG
Error Domain=NSCocoaErrorDomain Code=257 "The file “IMG_0027.JPG” couldn’t be opened because you don’t have permission to view it."
控制台日志
2016-06-25 12:47:59.108 链 [4187:1957121] 正文文件无法访问:/var/mobile/Media/DCIM/100APPLE/IMG_0027.JPG 错误域 = NSCocoaErrorDomain 代码 = 257“文件“IMG_0027.JPG”无法打开,因为您无权查看。” UserInfo={NSURL=file:///var/mobile/Media/DCIM/100APPLE/IMG_0027.JPG, NSFilePath=/var/mobile/Media/DCIM/100APPLE/IMG_0027.JPG, NSUnderlyingError=0x18b7ad40 {错误域=NSPOSIXErrorDomain 代码=1“不允许操作”}} 2016-06-25 12:48:02.969 链 [4187:1957659] 插件 com.swiftkey.SwiftKeyApp.Keyboard 无效 Optional(["public.image", "public.movie"])信息:[“UIImagePickerControllerOriginalImage”:尺寸 {1836, 1454} 方向 0 比例 1.000000,“UIImagePickerControllerReferenceURL”:资产库://资产/资产。
2016-06-25 13:04:05.136 Chain[4187:1957121] _BSMachError: (os/kern) 无效能力 (20) 2016-06-25 13:04:05.138 Chain[4187:1959394] _BSMachError: (os/kern ) 无效名称 (15) 2016-06-25 13:04:05.146 链 [4187:1959394] 插件 com.swiftkey.SwiftKeyApp.Keyboard 无效 2016-06-25 13:04:05.220 链 [4187:1957188] CFNetwork SSLHandshake 失败(-9806) 2016-06-25 13:04:05.661 Chain[4187:1957121] 正文文件无法访问:/var/mobile/Media/DCIM/100APPLE/IMG_0015.JPG 错误域=NSCocoaErrorDomain 代码=257“文件” IMG_0015.JPG”无法打开,因为您没有查看权限。” UserInfo={NSURL=file:///var/mobile/Media/DCIM/100APPLE/IMG_0015.JPG, NSFilePath=/var/mobile/Media/DCIM/100APPLE/IMG_0015.JPG, NSUnderlyingError=0x18bd4330 {错误域=NSPOSIXErrorDomain 代码=1 "不允许操作"}}
编辑:这是我的 didFinishPickingMedia:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
let mediaType = info[UIImagePickerControllerMediaType] as! NSString
print ("info: \(info)")
if mediaType.isEqualToString(kUTTypeImage as String) {
var newImage: UIImage
if let possibleImage = info["UIImagePickerControllerEditedImage"] as? UIImage {
newImage = possibleImage
}
else if let possibleImage = info["UIImagePickerControllerOriginalImage"] as? UIImage {
newImage = possibleImage
}
else {
return
}
/// CAN NOT GET NSURL working, NEED TO USE NSDATA
if let jpegData:NSData = UIImageJPEGRepresentation(newImage, 80) {
currentMediaTypeToUpload = "img"
fileToUploadDATA = jpegData
}
}
else if mediaType.isEqualToString(kUTTypeMovie as String) {
let videoURL = info[UIImagePickerControllerMediaURL] as? NSURL
fileToUploadURL = videoURL!
currentMediaTypeToUpload = "vid"
}