【发布时间】:2012-04-10 11:41:57
【问题描述】:
简介
我目前正在对一个Vimeo风格的应用程序进行一些错误修复,即用户可以从手机或iPad录制视频,然后将视频上传给其他用户观看。由于我们现在处理上传的方式,当前的问题与上传大文件有关。
问题
所以问题本质上是当上传文件到服务器时,我们首先将所有必须上传的字节分配在一个 NSData 对象中。然后,此字节字符串将附加到标准 HTTP Post 消息,然后接收 API 将处理它。 问题在于,对于大文件(视频很快),应用程序将简单地崩溃,因为 NSData 对象在 iDevice 上占用了太多内存。
这个过程是这样运作的:
Byte *buffer = malloc(content.defaultRepresentation.size);
NSUInteger buffered = [content.defaultRepresentation getBytes:buffer fromOffset:0.0 length:content.defaultRepresentation.size error:nil];
NSData *data = [NSData dataWithBytesNoCopy:buffer length:buffered];
NSData *movieData = [NSData dataWithData:data];
我只是从保存在 iPhone 或 iPad 的标准相机胶卷中的视频中获取字节。然后我将这些字节放入一个 NSData 对象中。然后,来自这个 NSData 对象的字节串将被简单地附加到一个简单的 HTTP post 消息并发送到 API。
问题
然后的问题是,我看到的问题是,整个字节字符串必须在单个 HTTP Post 消息中发送。那么有什么方法可以加载电影文件的块并将其附加到帖子消息中,这样您一次就不会占用太多内存?或者你怎么能这样做?
感谢您的宝贵时间:)
【问题讨论】:
标签: objective-c ios xcode file-upload nsdate