检查文件是否存在(Dropbox API v2)

Checking file existence (Dropbox API v2)

我正在使用以下技术栈开发一个项目:Angular、Ionic、Cordova。 下载文件到 Dropbox 时,我需要检查它是否在磁盘上。如果文件已经存在于磁盘上,我需要重命名它。我使用 (https://www.dropbox.com/developers/documentation/http/documentation#files-get_metadata) 来验证文件是否存在。逻辑是这样的,如果这个方法returns出错,那么就没有这个文件,我上传。如果方法 returns 元数据,则必须重命名文件。使用这种方法,对控制台的请求将抛出错误(这是自然的)。有没有一种方法可以替代这种不会给控制台带来错误的方法?这是实现这种方法的一段代码。

  async getNewFileName(fileName: string): Promise<string> {
    const { name, extension } = getNameExtension(fileName);
    for (let i = 0;; i++) {
      const tmpName = i ? `${name}(${i}).${extension}` : fileName;
      if (!await this.checkDropBoxFile(tmpName)) {
        return tmpName;
      }
    }
    return fileName;
  }

  async checkDropBoxFile(fileName: string): Promise<any> {
    const dbx = this.getDropbox();
    try {
      const res = await dbx.filesGetMetadata({ path: '/' + fileName });
      return res;
    } catch (e) {
      return false;
    }
  }

您可以使用 /files/list_folder endpoint 列出文件夹的所有内容,然后遍历结果,而不是对每个文件名调用 /files/get_metadata 来检查它是否存在检查文件名。这将消除错误,并且根据您的应用程序的结构,可能会减少对 Dropbox 的调用 API.
您可以在 Dropbox API explorer 中使用 /files/list_folder 端点(和其他端点)。