2016-09-28 3 views
1

J'utilise ci-dessous la classe java qui utilise la sardine, j'obtiens seulement des ressources ou la liste des fichiers zip dans le répertoire, que dois-je utiliser pour télécharger les fichiers zip?Comment télécharger les fichiers zip du serveur webdav à l'aide de sardine?

package com.download; 
import java.util.List; 

import org.mule.api.MuleEventContext; 
import org.mule.api.lifecycle.Callable; 
import com.github.sardine.DavResource; 
import com.github.sardine.Sardine; 
import com.github.sardine.SardineFactory; 

public class filesdownload implements Callable{ 

@Override 
public Object onCall(MuleEventContext eventContext) throws Exception { 
    Sardine sardine = SardineFactory.begin("***","***"); 

    List<DavResource> resources = sardine.list("http://hfus.com/vsd"); 
    for (DavResource res : resources) 
    { 
     System.out.println(res); 
    } 

    return sardine; 
} 
+0

Avez-vous trouvé quelque chose déjà? J'ai découvert que commons vfs permet zip et webdav – codesmith

Répondre

0

Vous devez utiliser la méthode sardine.get(). Method documentation N'oubliez pas d'utiliser le chemin absolu pour votre fichier. Par exemple: http://hfus.com/vsd/file.zip.

Exemple de code:

package com.download; 
import java.util.List; 

import org.mule.api.MuleEventContext; 
import org.mule.api.lifecycle.Callable; 
import com.github.sardine.DavResource; 
import com.github.sardine.Sardine; 
import com.github.sardine.SardineFactory; 
//TODO: add missing imports 

public class filesdownload implements Callable{ 

    @Override 
    public Object onCall(MuleEventContext eventContext) throws Exception { 
     Sardine sardine = SardineFactory.begin("***","***"); 

     List<DavResource> resources = sardine.list(serverUrl()+"/vsd"); 
     for (DavResource res : resources) { 
      if(res.getName().endsWith(".zip")) { 
       downloadFile(res); 
      } 
     } 

     return sardine; 
    } 

    private void downloadFile(DavResource resource) { 
     try { 
      InputStream in = sardine.get(serverUrl()+resource.getPath()); 
      // TODO: handle same file name in subdirectories 
      OutputStream out = new FileOutputStream(resource.getName()); 
      IOUtils.copy(in, out); 
      in.close(); 
      out.close(); 
     } catch(IOException ex) { 
      // TODO: handle exception 
     } 
    } 

    private String serverUrl() { 
     return "http://hfus.com"; 
    } 
}