【问题标题】:Dropbox sync api large video file uploadDropbox同步api大视频文件上传
【发布时间】:2014-02-13 05:05:12
【问题描述】:

我正在使用 Dropbox 同步 api 下载文本文件并通过我的 ios 应用程序将视频文件从 / 上传到 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];

请让我摆脱这个问题。任何帮助都应该是可观的,在此先感谢。

【问题讨论】:

  • 同步 API 似乎不允许我上传视频。它说文件类型不允许。你是如何让它与 Sync api 一起工作的?

标签: ios objective-c video dropbox dropbox-api


【解决方案1】:

问题是您创建了一个包含整个文件的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];

另一种选择是以较小的块读取位于self.path 的文件并使用DBFile appendData:error:

附注 - 您确实需要检查返回值以确保这些调用是否正常工作,并使用 error 参数记录问题的原因(如果有)。

【讨论】:

  • @rmaddy 感谢您的回复,使用您的代码避免了崩溃,但小视频文件上传成功。但如果视频很重,它会显示在下拉框中,但也显示 0 字节。
  • 你在检查writeContentsOfFile:shouldSteal:error:的返回值吗?如果返回NO,则检查错误。
  • @ rmaddy 我检查过它返回 YES,但我在调试器控制台中看到它打印了 [WARNING] ERR: DROPBOX_ERROR_NOTFOUND: sync.hpp:282: p(/c7.mov) 不存在跨度>
  • 那么您的文件路径无效。
  • 路径是这样的,/var/mobile/Applications/DE7B9C54-EA0E-4F0F-BCAF-868D4A943968/Documents/ughu.MOV。并且还上传了小视频。
猜你喜欢
  • 2016-03-13
  • 2022-01-27
  • 1970-01-01
  • 1970-01-01
  • 2017-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多