2016-05-24 5 views
0

Meine App ist ein Tender-Dokument-System, bei dem jede Angebotsnummer eine oder mehrere PDF-Dateien angehängt hat.Erstellen Sie eine Zip-Datei mit einer Reihe von PDF-Dateien

Anwendung erfolgt in Java ee mit Struts und MySQL.

In einer Datenbanktabelle werden die Pfade jeder zugehörigen PDF-Datei für eine Angebotsnummer gespeichert.

Ich möchte alle PDF-Dateien abrufen und für jede Angebotsnummer eine ZIP-Datei erstellen, damit der Benutzer diese Zip-Datei herunterladen und alle zugehörigen Dokumente mit einem einzigen Klick abrufen kann.

Ich versuchte Google und fand etwas namens ZipOutputStream, aber ich kann nicht verstehen, wie man das in meiner Anwendung verwendet. Bitte hilf mir, wenn ihr das könnt.

Antwort

1

Sie sind fast da ... Dies ist ein kleines Beispiel dafür, wie ZipOutputStream zu verwenden ... wir asume, dass Sie einen JAVA Helfer H haben, die Datenbankeinträge mit pdf-Dateipfade (und zugehörige Informationen) liefert:

FileOutputStream zipFile = new FileOutputStream(new File("xxx.zip")); 
ZipOutputStream output = new ZipOutputStream(zipFile); 

for (Record r : h.getPdfRecords()) { 
    ZipEntry zipEntry = new ZipEntry(r.getPdfName()); 
    output.putNextEntry(zipEntry); 

    FileInputStream pdfFile = new FileInputStream(new File(r.getPath())); 
    IOUtils.copy(pdfFile, output); // this method belongs to apache IO Commons lib! 
    pdfFile.close(); 
    output.closeEntry(); 
} 
output.finish(); 
output.close(); 
+0

Danke für Ihre Antwort ... Was ist h.getPdfRecords() ?? Soll diese Methode Pfade zu allen PDF-Dokumenten zurückgeben? oder nur die Namen? bitte helft mir, ich bin wirklich fest hier – Bhugy

+0

Ja, 'h' ist der JAVA Helper, den ich benutze, um die PDF-Info aus der Datenbank zu erhalten .... Idealerweise sollte H alle Informationen zurückgeben, die Sie für Ihr Problem benötigen (denn ich kann sehen, Sie brauchen nur den PDF-Dateinamen und PDF-Dateipfad) ... –

+0

Benötige ich irgendwelche Bibliotheken, um dies zu tun? weil, wenn ich dieses benutze, einige Schlüsselwörter (Rekord zum Beispiel) nicht erkannt werden – Bhugy

0

hey diesen Code Kasse .... hier finden Sie eine ZIP-Datei-Verzeichnis einfach erstellen können ....

public class CreateZipFileDirectory {

public static void main(String args[]) 
    {     
      try 
      { 
        String zipFile = "C:/FileIO/zipdemo.zip"; 
        String sourceDirectory = "C:/examples"; 

        //create byte buffer 
        byte[] buffer = new byte[1024]; 
        FileOutputStream fout = new FileOutputStream(zipFile); 
        ZipOutputStream zout = new ZipOutputStream(fout); 
        File dir = new File(sourceDirectory); 
        if(!dir.isDirectory()) 
        { 
          System.out.println(sourceDirectory + " is not a directory"); 
        } 
        else 
        { 
          File[] files = dir.listFiles(); 

          for(int i=0; i < files.length ; i++) 
          { 
            System.out.println("Adding " + files[i].getName()); 
            FileInputStream fin = new FileInputStream(files[i]); 
            zout.putNextEntry(new ZipEntry(files[i].getName())); 
            int length; 
            while((length = fin.read(buffer)) > 0) 
            { 
             zout.write(buffer, 0, length); 
            } 
          zout.closeEntry(); 
       fin.close(); 
          } 
        } 
     zout.close(); 
        System.out.println("Zip file has been created!"); 

      } 
      catch(IOException ioe) 
      { 
        System.out.println("IOException :" + ioe); 
      } 

    } 

}

Verwandte Themen