2013-02-26 70 views
5

मुझे अमेज़ॅन एस 3 पर उपफोल्डर के साथ अपलोड फ़ोल्डर की आवश्यकता है। मैं इस स्निपेट के साथ अपलोड करने की कोशिश करता हूं।अमेज़ॅन एस 3 में उपफोल्डर के साथ फ़ोल्डर कैसे अपलोड करें?

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 को देखा है के साथ इसे अपलोड करने की? आप इसके लिए uploadDirectory विधि का उपयोग कर सकते हैं। जावाडोक 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" जो तस्वीरें सभी तस्वीर मैं प्रगति संकेतक की मदद से अपलोड करने की आवश्यकता है कि नंबर शामिल यह संभव है और अपलोड करना चाहते हैं किस तरह –