我正在使用ObjectiveDropbox使用用户的Dropbox帐户管理某些任务,即列出文件并下载其中一些。
列出我帐户中的文件和文件夹非常简单,但是当我想下载文件时,我收到此错误:
download error: CFNetworkDownload_<some id>.tmp couldn't be moved to <unique ID> because an item with the same name already exists.
知道为什么吗?
执行下载的代码:
DropboxDownloadArg *downloadArg = [[DropboxDownloadArg alloc] initWithPath:metadata.pathLower];
NSURL *destURL = [NSURL fileURLWithPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]];
[self.dropboxClient.files download:downloadArg
destFileUrl:destURL
progress:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {
} success:^(DropboxFileMetadata * _Nonnull metadata) {
[self.downloadDelegate downloadHasCompletedSuccessfully];
} fail:^(DropboxError * _Nonnull error) {
NSLog(@"download error: %@", error.errorSummary);
[self.downloadDelegate downloadFailed];
}];
我检查了downloadArg和destURL是否正确创建并且有效。
谢谢
答案 0 :(得分:3)
我刚刚转载了你的问题。看起来问题出在您的目的地URL中。 当您组合不同的路径并将它们从NSURL转换为NSString并返回时,您可以获得如下路径:file:/// file:/ ... 检查示例项目。它使用临时目录,效果很好。
以下是Documents目录的工作代码:
NSURL *dir = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *filePath = [dir URLByAppendingPathComponent:@"file.f"];
[self.dropbox.files download:downloadArg destFileUrl:filePath progress:^(int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite) {