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

3
我正在使用以下技术栈开发项目:Angular、Ionic、Cordova。 在将文件下载到Dropbox时,我需要检查它是否已经存在于磁盘中。如果文件已经存在于磁盘上,我需要将其重命名。我使用(https://www.dropbox.com/developers/documentation/http/documentation#files-get_metadata)来验证文件是否存在。逻辑是这样的,如果该方法返回错误,则没有这样的文件,我会上传它。如果该方法返回元数据,则必须重命名该文件。采用这种方法,控制台会抛出一个错误(这是正常的)。有没有一种替代方法可以不向控制台报错?下面是实现此方法的代码。
  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;
    }
  }
1个回答

2

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接