2017-01-08 10 views
1

Dropbox上の既存ファイルの共有ファイルURLを取得します。私はdropbox-java-sdkを使用しています。私は今アップロードしたファイルの共有リンクを作成しています。私は既存のファイルの共有リンクを得ることができた唯一の方法は、すべてのリンクを一覧表示することであると私はパスに依存たいものを取得し、そのdropbox-sdk-javaを使用して、Dropbox内の既存ファイルの共有リンクを取得します。

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を取得する方法ではありませんように私が望むファイルのために?私はちょうどそれらの1つを得るためにすべての項目を反復することは無駄だと思う。

ソリューション
誰もが、これは重宝場合は、このためのコードは

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

listSharedLinksBuilderからListSharedLinksBuilderを取得し、指定された正確なパスのための唯一のリンクを要求するListSharedLinksBuilder.withDirectOnlyを設定しています。

+0

ありがとうございました!なぜあなたはドロップボックスの文書にこれを挿入していないのですか?私はあなたが共有する文書の例をそこに投稿しているのを見ています –

関連する問題