人々がこれに問題を抱えているため、他のいくつかのスレッドが開始されました。このような: 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 エラー Domain=NSCocoaErrorDomain Code=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"]) info: ["UIImagePickerControllerOriginalImage": サイズ {1836, 1454} 向き 0 スケール 1.000000, "UIImagePickerControllerReferenceURL": assets-library://asset/asset.
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 Chain[4187:1959394] プラグイン com.swiftkey.SwiftKeyApp.Keyboard 無効化 2016-06-25 13:04:05.220 Chain[4187:1957188] CFNetwork SSLHandshake 失敗(-9806) 2016-06-25 13:04:05.661 Chain[4187:1957121] 本文ファイルに到達できません: /var/mobile/Media/DCIM/100APPLE/IMG_0015.JPG エラー Domain=NSCocoaErrorDomain Code=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"
}