2015-05-20 10 views
3

Я пытаюсь загрузить видео с iPhone устройства, как:загрузка видео с iPhone устройства не удается, но работает на Simulator отлично ОШИБКА: «Невозможно прочитать файл»

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:

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 
     } 
    } 
+0

Вы пытались использовать requestAVAssetForVideo вместо requestImageDataForAsset? – Icaro

+0

@IcaroNZ Да, я сделал. –

ответ

1

После Мессинг с большим. Это классическая проблема с правами доступа в iOS. К сожалению, я не получил прямых ответов на это. Нам пришлось скопировать файл в наш локальный каталог моего приложения. После этого все работает как шарм. Но в случае большого файла я отправляю копию логики файлов в фоновом задании.