下载错误:CFNetworkDownload_ <some id =“”>。tmp无法移动到“”,因为已经存在具有相同名称的项目

时间:2016-08-31 19:49:19

标签: ios dropbox-api nsurl cfnetwork

我正在使用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是否正确创建并且有效。

谢谢

1 个答案:

答案 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) {