ios - Dropbox sync api 大视频文件上传

标签 ios objective-c video dropbox dropbox-api

我正在使用 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/

相关文章:

ios - SwiftUI:更改弹出窗口箭头颜色

ios - 使用 Swift 播放随机音频文件

css - 如何在具有动态高度的 DIV 容器中制作响应式视频背景?

ios - iOS-在录制视频的同时播放音频/声音

ios - UIButton 滑入,而不是淡入

ios - 如何在后台将一个 iOS 应用程序的 NSString 对象的值更改为另一个 iOS 应用程序?

javascript - 将视频替换为错误的图像

Python:检测视频容器中使用的编解码器

ios - 自定义单元格和默认单元格同时显示在 tableview 上

iphone - 如何在任何设备的 UIView 中间水平和垂直放置一个按钮?