我正在使用 Dropbox 同步 api 通过我的 ios 应用程序下载文本文件并从 Dropbox 上传视频文件或将视频文件上传到 Dropbox。
我在上传繁重的视频文件时遇到了困难。当我上传时长为 15 到 20 分钟的视频文件时,它会正确上传,但如果时长超过 25 分钟 然后它会出现内存警告和应用程序崩溃。
我在上传按钮操作中使用此代码
DBPath *paths=[[DBPath root] childPath:[self.allVideoArray objectAtIndex:Selectedvideo]];
DBFile *createfile=[filesystem createFile:paths error:nil];
NSData *data=[[NSData alloc]initWithContentsOfFile:self.path];
[createfile writeData:data error:nil];
[data relese];
请有人帮我解决这个问题。任何帮助都应该是值得赞赏的,提前致谢。
最佳答案
问题是您创建了一个包含整个文件的 NSData
实例。如果文件太大而无法放入内存,您的应用程序将会崩溃。有更好的方法可以将大文件写入 DBFile
。
既然你有本地文件的路径,你可以这样做:
DBPath *paths=[[DBPath root] childPath:[self.allVideoArray objectAtIndex:Selectedvideo]];
DBFile *createfile=[filesystem createFile:paths error:nil];
[createFile writeContentsOfFile:self.path shouldSteal:NO error:nil];
另一种选择是以较小的 block 读取位于 self.path
的文件并使用 DBFile appendData:error:
。
旁注 - 您确实需要检查返回值以确保这些调用是否有效,并使用 error
参数来记录问题的原因(如果有)。
关于ios - Dropbox sync api 大视频文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21745690/