简介
我目前在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消息中发送。那么有没有什么方法可以加载电影文件的块并将其附加到帖子消息,这样你一次不会占用太多内存?或者你怎么能这样做?
感谢您的时间:)
答案 0 :(得分:2)
我建议你使用ASIHTTPRequest库。它可以直接从手机上传文件,而不是先将文件加载到内存中。这里的逻辑是上传电影文件,将其分成多个部分,称为多部分,然后以队列方式上传