为什么通过 Dropbox API 查看的两个文件具有相同的 ID?

Why do two files viewed through the Dropbox API have the same id?

我正在使用 PowerShell 成功查询 Dropbox API,并使用 https://api.dropboxapi.com/2/files/list_folder 获取所有文件和文件夹。我将文件和文件夹放在单独的数组中,但是当尝试通过 id 从中提取单个文件时,有几个 id 引用了两个不同的文件。为什么是这样? 这是发生的片段:

try {
    $request = Invoke-RestMethod -Uri $list_folder_url -Method Post -Headers $headers -ContentType "application/json" -Body (ConvertTo-Json -InputObject $body)
} catch {
    $_.Exception.Response
}
$folders += $request.entries[0]

while ($request.has_more) {
    $cursor = $request.cursor
    $body = @{
        cursor="$cursor"
    }
    $request = Invoke-RestMethod -Uri $folder_continue_url -Method Post -Headers $headers -ContentType "application/json" -Body (ConvertTo-Json -InputObject $body)
    $folders += $request.entries | ? { $_.'.tag' -eq "folder"}
    $files += $request.entries | ? { $_.'.tag' -eq "file"}
}

$file = $files | ? { $_.id -eq "id:**************" } ## Returns two very different files with the same id

Dropbox 文件 ID 区分大小写,某些 Dropbox 文件 ID 可能仅因大小写而异。

在此代码中,您使用的是 PowerShell 的 -eq 运算符,但根据 the PowerShell documentation:

By default, all comparison operators are case-insensitive.

因此,您可能会收到多个条目,其中文件 ID 只是大小写不同。尝试使用 -ceq 而不是 -eq:

To make a comparison operator case-sensitive, add a c after the -. For example, -ceq is the case-sensitive version of -eq.