【问题标题】:Video upload from iPhone device fails but works on Simulator perfectly ERROR:'Cannot read file'从 iPhone 设备上传视频失败,但在模拟器上完美运行错误:'无法读取文件'
【发布时间】:2015-08-01 04:26:06
【问题描述】:

我正在尝试从 iPhone 设备上传视频:

var uploadTask = self.session?.uploadTaskWithRequest(request, fromFile:NSURL(string: assetFilePath.path)!)

此代码适用于模拟器,并提供一个我可以恢复的会话任务对象。但它不适用于 iPhone 设备。

它失败了:

2015-05-19 18:36:44.718 myApp[327:24703] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Cannot read file at file:///var/mobile/Media/DCIM/100APPLE/IMG_0144.mp4'

我尝试检查视频文件是否具有读取权限,但在 iPhone 上返回 false:

fileManager.fileExistsAtPath(asset.path)  // returns false

以前有人遇到过这种情况,还是我在这里做错了什么?

我用来获取文件路径的代码是:

    let options = PHFetchOptions()
    options.sortDescriptors = [
        NSSortDescriptor(key: "creationDate", ascending: true)
    ]
    currentVideofetch = PHAsset.fetchAssetsWithMediaType(.Video, options: options)
    let asset = self.currentVideofetch.objectAtIndex(indexPath.row) as? PHAsset  
    var assetLength:NSNumber!
    var assetFilePath:NSString!

    if let checkdAsset = asset {
        PHImageManager.defaultManager().requestImageDataForAsset(checkdAsset,options: nil) {
            imageData,dataUTI,orientation,info in

            assetLength = imageData.length as NSNumber
            let assetFilePathUrl  = info["PHImageFileURLKey"] as? NSURL
            assetFilePath = assetFilePathUrl!.absoluteString! 
            println("Assets FilePath \(assetFilePath)") // returns file:///var/mobile/Media/DCIM/100APPLE/IMG_0144.mp4
        }
    }

【问题讨论】:

  • 您是否尝试使用 requestAVAssetForVideo 代替 requestImageDataForAsset?

标签: ios iphone swift aws-sdk-ios


【解决方案1】:

在搞砸了很多之后。这是 iOS 中的经典权限问题。不幸的是,我没有得到任何直接的答案。我们必须将文件复制到我的应用程序的本地目录。在那之后,一切都像魅力一样运作。 但在大文件的情况下,我会在后台任务中发送复制文件逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 2011-02-07
    相关资源
    最近更新 更多