更新文件时在 Dropbox API 中保留区分大小写的文件名

Preserve Case sensitive filename in Dropbox API when updating a file

我正在使用这样的代码:

Metadata e = ...;
dbxClient.files().uploadBuilder(e.getPathLower()).withMode(WriteMode.OVERWRITE).uploadAndFinish(...)

这会导致丢失文件名的大小写(例如 MyFile.txt 变为 myfile.txt)。这似乎很明显,因为 getPathLower 正在返回小写的文件名。

Metadata 有另一种方法 getDisplayName() 返回大小写路径:

 /**
     * The cased path to be used for display purposes only. In rare instances
     * the casing will not correctly match the user's filesystem, but this
     * behavior will match the path provided in the Core API v1, and at least
     * the last path component will have the correct casing. Changes to only the
     * casing of paths won't be returned by {@link
     * DbxUserFilesRequests#listFolderContinue(String)}. This field will be null
     * if the file or folder is not mounted.
     *
     * @return value for this field, or {@code null} if not present.
     */
    public String getPathDisplay() {
        return pathDisplay;
    }

我不想使用它,因为它说它仅用于显示目的。

那么,如何才能避免文件名大小写不正确呢?

要更新您拥有 Metadata 的现有文件,您可以使用文件 ID。您可以使用 FileMetadata.getId 获取文件 ID,然后将该值传递给 uploadBuilderpath 参数(而不是 e.getPathLower())。