【问题标题】:How to handle large files with NSData?如何使用 NSData 处理大文件?
【发布时间】:2016-08-02 12:30:20
【问题描述】:

我有一个非常大的视频,我需要将此视频分块以将其上传到 Dropbox

我尝试使用NSData,但是因为这个文件太大,我的应用程序总是崩溃,所以我现在不知道我能做什么。

对于较小的视频,我使用了这个:

NSData(contentsOfURL: self.newAsset.URL)!.subdataWithRange(NSMakeRange(0, 10000000))

我对此没有任何问题,但是当视频太大时出现错误:

无法分配内存

那么,我可以做些什么来分块大视频的数据呢?

【问题讨论】:

    标签: ios swift nsdata avurlasset swiftydropbox


    【解决方案1】:

    如果您想实现自定义,请使用NSURLSession,以获取最佳实践,否则第三方库有很多,例如RESTKitAFNetworking。对于NSURLSession,会话NSURLSession 支持三种类型的任务:数据任务、下载任务和上传任务。它也支持后台上传/下载。来源(apple developer)

    • 数据任务使用 NSData 对象发送和接收数据。数据任务旨在用于从您的应用程序到服务器的简短的、通常是交互式的请求。数据任务可以在收到每条数据后一次将数据返回到您的应用,也可以通过完成处理程序一次性返回所有数据。
    • 下载任务以文件形式检索数据,并支持在应用未运行时进行后台下载。
    • 上传任务以文件形式发送数据,并支持在应用未运行时进行后台上传。

    图片来源raywenderlich.com

    【讨论】:

      【解决方案2】:

      你应该使用视频文件 url 来使用 NSURLSession 上传大数据

      - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-21
        • 1970-01-01
        • 2021-06-25
        • 1970-01-01
        • 2013-10-23
        • 2010-09-30
        • 1970-01-01
        相关资源
        最近更新 更多