2017-01-08 2 views
1

Dropbox에서 기존 파일의 공유 파일 URL을 검색하고 싶습니다. dropbox-java-sdk를 사용하고 방금 업로드 한 파일에 대한 공유 링크를 만들었습니다. 직접 URL을 얻을 수있는 방법이 기존 파일의 공유 링크를 얻을 내가 관리하는 유일한 방법은 너무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); 
     } 

    } 

처럼, 모든 링크를 나열하고 내가 경로에 따라 원하는 것을 얻을 것입니다 없을까 내가 원하는 파일? 나는 단지 그것들 중 하나를 얻기 위해 모든 항목을 반복하는 것이 낭비라고 생각합니다. 경우 사람에

솔루션
이 유용 발견,이에 대한 코드는

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

답변

관련 문제