我想检索 Dropbox 上现有文件的共享文件 URL。我正在使用 dropbox-java-sdk,我已经设法为我刚刚上传的文件创建了一个共享链接。我设法获取现有文件的共享链接的唯一方法是列出所有链接并根据路径获取我想要的链接,就像这样
public void getShareLink(String path) throws DbxApiException, DbxException{
DbxRequestConfig config = new DbxRequestConfig("test/DbApi-sdk");
DbxClientV2 client = new DbxClientV2(config, getToken(AuthorizationFile));
try {
ListSharedLinksResult sharedLinkMetadata = client.sharing().listSharedLinks();
for (SharedLinkMetadata slm: sharedLinkMetadata.getLinks()){
if(slm.getPathLower().equalsIgnoreCase(path)){
System.out.println(slm.getUrl());
return;
}
}
} catch (CreateSharedLinkWithSettingsErrorException ex) {
System.out.println(ex);
} catch (DbxException ex) {
System.out.println(ex);
}
}
有没有办法直接获取我想要的文件的url?我只是认为迭代所有项目只是为了获得其中一个是一种浪费。
最佳答案
获取ListSharedLinksBuilder
来自 listSharedLinksBuilder
并设置 ListSharedLinksBuilder.withDirectOnly
仅请求指定确切路径的链接:
public String getShareLink(String path) {
DbxRequestConfig config = new DbxRequestConfig("test/DbApi-sdk");
DbxClientV2 client = new DbxClientV2(config, getToken(AuthorizationFile));
try {
ListSharedLinksResult sh = client.sharing().listSharedLinksBuilder()
.withPath(path)
.withDirectOnly(true)
.start();
for (SharedLinkMetadata slm : sh.getLinks()) {
return slm.getUrl();
}
} catch (CreateSharedLinkWithSettingsErrorException ex) {
System.out.println(ex);
return null;
} catch (DbxException ex) {
System.out.println(ex);
return null;
}
return null;
}
关于java - 使用 dropBox-sdk-java 获取 Dropbox 中现有文件的共享链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41538255/