如何将videopath转换为NSData

我用DKImagePicker从图库中获取多个video。 能够获取video,但不能转换为NSData 。 也从服务器接收错误。

 Error Domain=NSCocoaErrorDomain Code=257 "The file “IMG_0040.MOV” couldn't be opened because you don't have permission to view it." UserInfo={NSFilePath=/var/mobile/Media/DCIM/100APPLE/IMG_0040.MOV, NSUnderlyingError=0x172e5f6b0 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}} 

可能不会正确转换为NSData或可能是其他问题。 我到目前为止尝试的是:

 let videoURL = User.sharedInstance.arrRoomGalleryVideos.objectAtIndex(index) as? NSURL var movieData: NSData? do { let video = try NSData(contentsOfURL: videoURL!, options: .DataReadingMappedIfSafe) print("video", video) multipartFormData.appendBodyPart(data: video, name: "video_path[]", fileName: strVidName, mimeType: "mp4") } catch { print(error) return } 

请指导。 提前致谢。

当您从委托方法获得文件path时,您应该立即将文件复制到Documents或任何其他地方。 因为原来的文件被放置到私人文件夹,这是我所知的暂时的。 所以,当你的第三方工具完成处理并存储到文件中时 – 在某些时候它变得不可访问。 所以在你使用copyItemAtPath:toPath:或者类似的东西拷贝之后 – 你可以通过从新path读取NSData来获得NSData。

从DKImagePicker git我find方法: writeAVToFile(path:presetName:completeBlock:)这可能有所帮助。 看这里