使用dropBox-sdk-java

时间:2017-01-08 21:47:10

标签: java dropbox-api dropbox-java

我想在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?我只是认为迭代所有项目只是为了得到其中一个是浪费。

解决方案
如果有人发现这个有用,那么代码就是

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;    
    }

1 个答案:

答案 0 :(得分:1)

ListSharedLinksBuilder获取listSharedLinksBuilder并设置ListSharedLinksBuilder.withDirectOnly仅请求指定确切路径的链接。