读取文件权限问题Swift&;Firebase-移动非模拟器
我正在尝试从访问用户视频的自定义UICollection上载视频。当我尝试将URL上载到firebase时,出现以下错误:读取文件权限问题Swift&;Firebase-移动非模拟器,swift,firebase,swift3,permissions,firebase-storage,Swift,Firebase,Swift3,Permissions,Firebase Storage,我正在尝试从访问用户视频的自定义UICollection上载视频。当我尝试将URL上载到firebase时,出现以下错误: Body file is unreachable: /var/mobile/Media/DCIM/103APPLE/IMG_3002.MOV Error Domain=NSCocoaErrorDomain Code=257 "The file “IMG_3002.MOV” couldn’t be opened because you don’t have permiss
Body file is unreachable: /var/mobile/Media/DCIM/103APPLE/IMG_3002.MOV
Error Domain=NSCocoaErrorDomain Code=257 "The file “IMG_3002.MOV” couldn’t be opened because you don’t have permission to view it." UserInfo={NSURL=file:///var/mobile/Media/DCIM/103APPLE/IMG_3002.MOV, NSFilePath=/var/mobile/Media/DCIM/103APPLE/IMG_3002.MOV, NSUnderlyingError=0x17024b790 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}
我有点困惑为什么会发生这种情况,当我打印出我得到的视频的url时:
file:///var/mobile/Media/DCIM/103APPLE/IMG_3002.MOV
&&我的info.plist看起来像这样
以下是上传代码:
videosFolder.child("\(nsuid).mov").putFile(self.videoURLToUpload, metadata: nil, completion: { (metadata, error) in
if error != nil {
print("we Had an Error!: \(String(describing: error))")
} else {
print("we uploaded the video correctly!!!")
}
})
&&以防万一,这里是我获取视频的地方
struct Media {
var image:UIImage?
var videoURL:NSURL?
}
var mediaArray = [Media]()
func grabPhotos(){
let imgManager = PHImageManager.default()
let requestOptions = PHImageRequestOptions()
requestOptions.isSynchronous = true
requestOptions.deliveryMode = .highQualityFormat
let fetchOptions = PHFetchOptions()
fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
if let fetchResult : PHFetchResult = PHAsset.fetchAssets(with: .video, options: fetchOptions) {
if fetchResult.count > 0 {
for i in 0..<fetchResult.count{
var mediaItem = Media()
//Used for fetch Image//
imgManager.requestImage(for: fetchResult.object(at: i) as PHAsset , targetSize: CGSize(width: 400, height: 400), contentMode: .aspectFit, options: requestOptions, resultHandler: {
image, error in
let imageOfVideo = image! as UIImage
mediaItem.image = imageOfVideo;
//Used for fetch Video//
imgManager.requestAVAsset(forVideo: fetchResult.object(at: i) as PHAsset, options: PHVideoRequestOptions(), resultHandler: {(avAsset, audioMix, info) -> Void in
if let asset = avAsset as? AVURLAsset {
let videoData = NSURL(string: "\(asset.url)")
let duration : CMTime = asset.duration
let durationInSecond = CMTimeGetSeconds(duration)
print(durationInSecond)
mediaItem.videoURL = videoData!
self.mediaArray.append(mediaItem)
print(self.mediaArray.count)
}
})
})
}
}
else{
//showAllertToImportImage()//A function to show alert
}
}
}
struct媒体{
var图像:UIImage?
var videoURL:NSURL?
}
var mediaArray=[Media]()
func grabPhotos(){
让imgManager=PHImageManager.default()
让requestOptions=PHImageRequestOptions()
requestOptions.isSynchronous=true
requestOptions.deliveryMode=.highQualityFormat
让fetchOptions=PHFetchOptions()
fetchOptions.sortDescriptors=[NSSortDescriptor(键:“creationDate”,升序:false)]
如果让fetchResult:PHFetchResult=PHAsset.fetchAssets(带:。视频,选项:fetchOptions){
如果fetchResult.count>0{
因为我在0中…在0中无效
如果let asset=avAsset as?avurlast{
让videoData=NSURL(字符串:“\(asset.url)”)
let duration:CMTime=asset.duration
让durationInSecond=CMTimeGetSeconds(持续时间)
打印(持续时间秒)
mediaItem.videoURL=视频数据!
self.mediaArray.append(mediaItem)
打印(self.mediaArray.count)
}
})
})
}
}
否则{
//showAllertToImportImage()//用于显示警报的函数
}
}
}
这个问题出现在手机上,而不是模拟器上我不确定这是否会有帮助,但我想我会把它传递给大家,以防万一:不幸的是,这个问题也出现在手机上,而不是模拟器上。我仍然有这个问题:|嘿,安德鲁斯。你是不是要解决这个问题?不,不幸的是我没有