2013-02-26 2 views
5

Мне нужно загрузить папку с подпапками на amazon s3. Я пытаюсь загрузить этот снайпер.Как загрузить папку с подпапкой в ​​amazon s3?

for (Path path : directoryWalk("/home/rmuhamedgaliev/tmp/eota7tas0cdlg2ufq5mlke7olf/")){ 
     if (!path.getParent().toString().equals("eota7tas0cdlg2ufq5mlke7olf")){ 
     amazonS3Client.putObject("*****", "/plans/eota7tas0cdlg2ufq5mlke7olf/" + path.getParent().toString() + "/" + path.getFileName(), new File(path.toString())); 
     } else { 
     amazonS3Client.putObject("*******", "/plans/eota7tas0cdlg2ufq5mlke7olf/" + path.getFileName(), new File(path.toString())); 
     } 
    } 

Но этот код создавать полные файлы пути с ("/ главная/rmuhamedgaliev/TMP/eota7tas0cdlg2ufq5mlke7olf"). Как загрузить его с пути ("/ планы/eota7tas0cdlg2ufq5mlke7olf/{вложенные папки и файлы}")

private List<Path> directoryWalk(String path) throws IOException { 
     final List<Path> files = new ArrayList<>(); 
     Files.walkFileTree(Paths.get(path), new SimpleFileVisitor<Path>() { 

      @Override 
      public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { 
       files.add(file); 
       return FileVisitResult.CONTINUE; 
      } 
     }); 
     return files; 
    } 

ответ

12

Вы смотрели на TransferManager в AWS SDK для Java? Для этого вы можете использовать метод uploadDirectory. Javadoc - here. В сущности, вы могли бы сделать что-то вроде этого:

transferManager.uploadDirectory(bucketName, "plans/eota7tas0cdlg2ufq5mlke7olf/", new File("/home/rmuhamedgaliev/tmp/eota7tas0cdlg2ufq5mlke7olf/"), true); 
1

Я написал свой собственный путь.

 List<File> files = new LinkedList<File>(); 
     listFiles(new File("/home/rmuhamedgaliev/tmp/eota7tas0cdlg2ufq5mlke7olf"), files, true); 
     for (File f : files) { 
      String key = f.getAbsolutePath().substring(new File("/home/rmuhamedgaliev/tmp/eota7tas0cdlg2ufq5mlke7olf").getAbsolutePath().length() + 1) 
       .replaceAll("\\\\", "/"); 
      amazonS3Client.putObject("****", "plans/eota7tas0cdlg2ufq5mlke7olf/" + key, f); 
     } 
+0

Я хочу, чтобы загрузить все файлы, которые присутствуют в одной папке, такие как предположим, что я название папки «TestMech», который содержит ряд фотографий, которые все фотографии мне нужно, чтобы загрузить с помощью индикатора прогресса возможно & как –

Смежные вопросы