检查文件是否存在(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
端点(和其他端点)。
我正在使用以下技术栈开发一个项目: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
端点(和其他端点)。