更新文件时在 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,然后将该值传递给 uploadBuilder
的 path
参数(而不是 e.getPathLower()
)。
我正在使用这样的代码:
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,然后将该值传递给 uploadBuilder
的 path
参数(而不是 e.getPathLower()
)。