2013-08-19 3 views
1

지금까지 Dropbox API를 내 프로젝트에 성공적으로 통합했습니다. 이를 위해 Dropbox SDK에 제공되는 예제 프로그램을 사용하고 있습니다. 그 길에서 (무작위 그림) 다운로드하고 파일을 쉽게 업로드 할 수 있습니다. 제 질문은, 보관 용 계정에서 한 번에 여러 개의 파일 또는 폴더를 다운로드하려면 어떻게해야합니까? . 또한 다운로드 버튼을 클릭하면 무작위로 하나의 이미지 파일을 선택한 다음 표시하는 대신 모든 이미지 파일 또는 특정 폴더를 다운로드하려고합니다. 어떤 제안이나 도움을 주시면 감사하겠습니다.안드로이드의 dropbox에서 여러 파일이나 폴더를 다운로드 중입니까?

미리 감사드립니다.

+0

가능한 복제는 PATH에서 모든 파일 및 폴더를 검색 : http://stackoverflow.com/questions/6180926/android- dropbox-api-file-download –

답변

0

Sync API는 파일을 열 때 필요에 따라 파일을 다운로드하여 작동합니다. 따라서 읽으려는 모든 파일을 열면됩니다.

+0

어떻게 그럴 수 있습니까? 파일 이름을 하나씩 만 전달할 수 있습니다. 이것을 재귀 적으로하는 것을 의미합니까? 반면에 사용자가 파일 이름을 모르는 경우에는 경로 사용 만 다운로드 할 수있는 방법을 의미합니다. – chain

+0

해당 경로에있는 파일을 나열하고 필요에 따라 열 수 있습니다. – smarx

+0

코드 스 니펫을 게시 해주십시오. 그것은 나를 위해 정말로 도움이 될 것입니다. – chain

1

안녕하세요. 다음 코드를 읽어보세요. 도움이 될 수 있습니다.

private boolean downloadDropboxFile(String dbPath, File localFile) throws IOException{ 

    BufferedInputStream br = null; 
    BufferedOutputStream bw = null; 

    try { 
     if (!localFile.exists()) { 
      localFile.createNewFile(); //otherwise dropbox client will fail silently 
     } 

     FileDownload fd = api.getFileStream("dropbox", dbPath, null); 
     br = new BufferedInputStream(fd.is); 
     bw = new BufferedOutputStream(new FileOutputStream(localFile)); 

     byte[] buffer = new byte[4096]; 
     int read; 
     while (true) { 
     read = br.read(buffer); 
     if (read <= 0) { 
     break; 
     } 
     bw.write(buffer, 0, read); 
     } 
    } finally { 
     //in finally block: 
     if (bw != null) { 
      bw.close(); 
     } 
     if (br != null) { 
      br.close(); 
     } 
    } 

    return true; 
} 

자세한 내용은 source을 확인하십시오.

+0

답변을 수락하기 전에 먼저 코드를 명확하게 이해하고 싶습니다. 이 코드를 사용하면 위에서 언급 한 경로에서 단일 파일이나 전체 폴더 또는 사용 가능한 모든 파일을 다운로드 할 수 있습니다. FileDownload 클래스는 dropbox API에 미리 정의되어 있거나 수동으로 만들어야합니다. 나는 이것이 의심 스러울지라도 어리석은 질문 일 수 있음을 안다. – chain

+0

이것은 관련성이없는 것 같습니다. (핵심 API가 아닌 Sync API를 사용하고있는 것 같습니다.) – smarx

1

모든 파일 및 폴더를 드롭 상자에서 가져와야하는 경우 프로젝트에이 코드를 복사하여 붙여 넣기 만하면됩니다. 그것은 당신을 많이 도울 것입니다.

String mPath="/"; //You can change the path here to specific FOLDER 
Entry dirent = null; 
try 
    { 
     dirent = mApi.metadata(mPath, 1000, null, true, null);    
    } 
catch (DropboxException e) 
    { 
    System.out.println("Error Detail "+e.getMessage()); 
    } 

는 // 루프를 수행하고

 for (Entry ent: dirent.contents) 
    { 
     String name = ent.fileName();       
     System.out.println("My File in Folder "+name);       
     } 
관련 문제