【问题标题】:Overwriting file with DropboxSDK使用 DropboxSDK 覆盖文件
【发布时间】:2014-04-08 22:21:30
【问题描述】:

我正在使用 DropboxSDK(核心 API)。我用这个功能上传文件:

- (void)uploadFile {

    [[self restClient] loadMetadata:@"/MyFolder"];
}

- (void)restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata {

    if (metadata.isDirectory) {
        if (metadata.contents.count == 0) {
            NSString *filename = @"File.txt";
            NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
            NSString *documentsDir = [documentPaths objectAtIndex:0];
            NSString *databasePath = [documentsDir stringByAppendingPathComponent:filename];
            NSString *destDir = @"/MyFolder";
            [[self restClient] uploadFile:filename toPath:destDir withParentRev:nil fromPath:databasePath];
        } else {
            for (DBMetadata *file in metadata.contents) {
                [self overwriteFile:metadata];
            }
        }
    }
}

我尝试用这个函数覆盖文件“File.txt”,但它不起作用。

- (void)overwriteFile:(DBMetadata*)meta {

    NSString *filename = @"File.txt";
    NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir = [documentPaths objectAtIndex:0];
    NSString *databasePath = [documentsDir stringByAppendingPathComponent:filename];
    [[self restClient] uploadFile:filename toPath:meta.path withParentRev:meta.rev fromPath:databasePath];
}

调用此委托:

- (void)restClient:(DBRestClient *)client uploadedFile:(NSString *)destPath from:(NSString *)srcPath metadata:(DBMetadata *)metadata {

    NSLog(@"File uploaded successfully to path: %@", metadata.path);
}

我在日志中显示: 文件成功上传到路径:/myfolder/File.txt。然后我去 Dropbox,我看到,我的文件日期没有改变。

我做错了什么?你能帮帮我吗?

【问题讨论】:

  • “它不起作用”是什么意思?您是否收到异常、来自 Dropbox SDK 的任何错误消息或其他什么?
  • @Romain 我已经更新了我的问题。
  • 您是否尝试将您尝试上传的文件的内容打印到控制台,以确保它是“新文件”,而不是您再次上传的同一个文件?
  • @Romain 是的,我做到了。我已更改文件并尝试再次上传,但未在 Dropbox 上更新。
  • 这可能不是问题,但你为什么要在-(void)restClient:loadedMetadata: 中进行for 循环?这样看来,您似乎正在用您的File.txt 覆盖/MyFolder 文件夹中的所有文件。另外,尝试NSLog 从回调中获得的所有内容,包括destPathsrcPath 变量,以检查所有内容是否一致。最后,你是否设置了一个回调以防出错?像这样:- (void)restClient:(DBRestClient *)client uploadFileFailedWithError:(NSError *)error。如果你这样做了,我可以肯定地猜到它从来没有被调用过,否则你会说的......

标签: ios objective-c dropbox-api overwrite core-api


【解决方案1】:

请注意,uploadFile 会上传到 路径 toPath 内名为 filename 的文件。在我看来,您可能正在尝试上传到 /MyFolder/File.txt/File.txt 之类的内容。确保toPath 是您要将文件File.txt 写入其中的文件夹。

【讨论】:

    猜你喜欢
    • 2020-12-29
    • 2019-10-21
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 2020-12-26
    • 1970-01-01
    相关资源
    最近更新 更多