ZIP File erstellen

internet

Top Contributor
Hallo,

ich möchte gerne ein ZIP File erstellen und das in einem Stream von der Web GUI zurückgeben:

Java:
/**
     * Generiert ein File, das heruntergeladen werden kann
     *
     * @throws IOException
     * @throws PicPictureNotFoundException
     */
    public ByteArrayInputStream createZipFileForWholePicAlbum(PicAlbum picAlbum)
            throws IOException, PicPictureNotFoundException {

        List<PicPicture> picPictureList = picPictureService.findAllPicPictureFromPicAlbum(picAlbum);

        if (picPictureList == null || picPictureList.isEmpty())
            throw new PicPictureNotFoundException();

        // Destination of the ZIP file (an in-memory byte array)
        ByteArrayOutputStream boas = new ByteArrayOutputStream();

        /*
         * Write the ZIP file. This creates a single entry named "file.txt" with
         * "Hello, World!" as its contents.
         */
        try (ZipOutputStream zos = new ZipOutputStream(boas)) {

            for (PicPicture picPicture : picPictureList) {

                File file = new File(picPicture.getStorageAttachment().getFullPath());

                BufferedInputStream bufferedInputStream = null;
                byte data[] = new byte[1024];
                FileInputStream fileInputStream = new FileInputStream(file.getAbsolutePath());
                bufferedInputStream = new BufferedInputStream(fileInputStream, 1024);

                ZipEntry entry = new ZipEntry(file.getName());
                zos.putNextEntry(entry);
                int count;
                while ((count = bufferedInputStream.read(data, 0, 1024)) != -1) {
                    zos.write(data, 0, count);
                }
                bufferedInputStream.close();
                fileInputStream.close();

                zos.closeEntry();
            }
            
        }

        // Create an InputStream to read the raw bytes of the ZIP file
        ByteArrayInputStream bois = new ByteArrayInputStream(boas.toByteArray());

        return bois;
    }

in meiner Controller - Klasse:
Java:
public void createZipFileForWholePicAlbum(PicAlbum picAlbum) throws IOException, PicPictureNotFoundException {

       private StreamedContent streamFile:

        try {

            ByteArrayInputStream is = picGalleryDownloadProcessService.createZipFileForWholePicAlbum(picAlbum);

            streamFile = DefaultStreamedContent.builder()
                    .contentType("application/zip")
                    .name("MeineBilder.zip")
                    .stream(() -> is).build();

        }

        catch (Exception e) {
            LOGGER.error(ExceptionUtils.getFullStackTrace(e));
            ErrorMessage.showErrorMessage();
        }

    }

Ausgabe in GUI (Primefaces):
Java:
            <p:commandButton value="Alle Bilder herunterladen"
                                        actionListener="#{actionPicGalleryDownloadController.createZipFileForWholePicAlbum(picAlbumForPortalShowController.picAlbum)}"
                                        icon="fa fa-download" styleClass="GreenButton">
                                        <p:fileDownload value="#{actionPicGalleryDownloadController.streamFile}" />
                                    </p:commandButton>

Es gibt mir auch eine Datei zurück.

Allerdings enthält die ZIP -Datei keine Dateien, sondern sieht so aus:
1632918611748.png


Kann hier jemand weiterhelfen?
 

internet

Top Contributor
Was meinst du genau?

Hier gebe ich es doch zurück?
Java:
            ByteArrayInputStream is = picGalleryDownloadProcessService.createZipFileForWholePicAlbum(picAlbum);

            streamFile = DefaultStreamedContent.builder()
                    .contentType("application/zip")
                    .name("MeineBilder.zip")
                    .stream(() -> is).build();

Wie gesagt, ich kann auch eine ZIP - Datei herunterladen... Allerdings enthält diese nicht meine gewünschten Datein (mind. 2 Bilder).
Beim Debuggen sehe ich, dass diese hinzugefügt werden...
 

internet

Top Contributor
Ne, StreamedContent streamFile wird ja gefüllt...

Java:
@ViewScoped
@Named
public class ActionPicGalleryDownloadController implements Serializable {

private StreamedContent streamFile; // + Getter und Setter

Java:
            <p:commandButton value="Alle Bilder herunterladen"
                                        actionListener="#{actionPicGalleryDownloadController.createZipFileForWholePicAlbum(picAlbumForPortalShowController.picAlbum)}">
                                        <p:fileDownload value="#{actionPicGalleryDownloadController.streamFile}" />
                                    </p:commandButton>

Ich schätze eher, dass in "createZipFileForWholePicAlbum" etwas nicht passt
 

mihe7

Top Contributor
Ach so, ich habe auf die Value in fileDownload nicht geachtet :) Vom Drüberschauen her, sehe ich jetzt beim Erzeugen der ZIPs allerdings auch kein Problem.
 

internet

Top Contributor
Habe den Fehler gefunden... Es liegt an Primefaces...
Seit Primefaces 10 dachte ich, dass man kein ajax="false" benötigen würde, aber es scheint eher, dass das ein Bug ist...
Ändere ich den Button zu:

Java:
<p:commandButton value="Alle Bilder herunterladen" update=":growl" ajax="false"

Dann geht es...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
K Runable Jar File erstellen Java Basics - Anfänger-Themen 17
I Automatisch Verzeichnis erstellen bei File erstellen Java Basics - Anfänger-Themen 5
U Anhand von Ant ein War-File erstellen Java Basics - Anfänger-Themen 0
R Ini File erstellen Java Basics - Anfänger-Themen 1
Kenan89 XML-Files erstellen wirft File not found Exception Java Basics - Anfänger-Themen 9
K JAR file erstellen Java Basics - Anfänger-Themen 18
J WAVE-file mit Java Sound erstellen Java Basics - Anfänger-Themen 9
C (Eclipse) .jar File erstellen Java Basics - Anfänger-Themen 39
J Java Anfänger .jar file erstellen Java Basics - Anfänger-Themen 9
hdi File lässt sich nicht erstellen Java Basics - Anfänger-Themen 3
T File-Objekt aus getClass().getResource() erstellen? Java Basics - Anfänger-Themen 5
F jar-file erstellen? Java Basics - Anfänger-Themen 3
G datei im jar-file erstellen Java Basics - Anfänger-Themen 7
G Neues File mit vorgegebenen Einstellungen erstellen? Java Basics - Anfänger-Themen 7
H Jar File erstellen Java Basics - Anfänger-Themen 3
I Upload File zu einem Webservice Java Basics - Anfänger-Themen 17
LeoDerKek Textdatei in JAR-File Java Basics - Anfänger-Themen 4
Tom/S File Java Basics - Anfänger-Themen 10
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
A Checkstyle - File contains tab characters Java Basics - Anfänger-Themen 2
H Java file nicht gefunden Java Basics - Anfänger-Themen 5
C File speichern Java Basics - Anfänger-Themen 5
C Runnable Jar-File erzeugen Java Basics - Anfänger-Themen 14
C Pfad zu Properties-File bei ResourceBundle Java Basics - Anfänger-Themen 7
rafi072001 Lesen aus einem Excel File Java Basics - Anfänger-Themen 10
C Bild in executable JAR File mitgeben Java Basics - Anfänger-Themen 5
K File (png) in Image laden Java Basics - Anfänger-Themen 3
B Inputstream in file schreiben? Java Basics - Anfänger-Themen 23
S Input/Output Reader/Writer finden file nicht Java Basics - Anfänger-Themen 3
T Buffered Stream leert Txt File Java Basics - Anfänger-Themen 3
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
Dimax In Java File (nicht in Java Projekt) mysql Driver importieren Java Basics - Anfänger-Themen 3
K File wird in der .Jar nicht gefunden Java Basics - Anfänger-Themen 3
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
Trèfle EXCEL-File Laufwerkunabhängig einbinden. Java Basics - Anfänger-Themen 1
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
B Hilfe bei InputStream To File Java Basics - Anfänger-Themen 22
topi relativer Pfad in einem Runnable JAR file Java Basics - Anfänger-Themen 12
A jar File kleiner bekommen Java Basics - Anfänger-Themen 3
B File öffnen in src/main/webapp Java Basics - Anfänger-Themen 4
K File-Name Vergleich Java Basics - Anfänger-Themen 2
krgewb Runnable JAR File Export Java Basics - Anfänger-Themen 11
S Maxium aus einer File finden Java Basics - Anfänger-Themen 12
dapzoo Class File Version zu niedrig? Ausführen über Eingabeaufforderung nicht möglich Java Basics - Anfänger-Themen 14
D Input/Output File exists canRead canWrite Java Basics - Anfänger-Themen 11
B cal4j - Error at line 1:Unexpected end of file Java Basics - Anfänger-Themen 0
P jar file lässt sich nicht ausführen Java Basics - Anfänger-Themen 4
E Best Practice Jar-file mit zwei Klassen und externer Bibliothek über Konsole erzeugen Java Basics - Anfänger-Themen 13
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
F File von Windowsfreigabe laden Java Basics - Anfänger-Themen 1
S java.nio.file.FileSystemException bei Dateizugriff vermeiden Java Basics - Anfänger-Themen 7
Vince42 NIO File Tree in XML umwandeln Java Basics - Anfänger-Themen 10
J Zweidimensionales Array in CSV File exportieren Java Basics - Anfänger-Themen 3
E War-File Problem mit Eclipse Java Basics - Anfänger-Themen 3
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
M Email versenden Outlook, attached File, ohne Anmeldung Java Basics - Anfänger-Themen 4
M Input/Output Word File Kopieren Java Basics - Anfänger-Themen 12
T Java Executable jar file funktioniert nicht Java Basics - Anfänger-Themen 4
sourcecorn Werte aus einem File lesen Java Basics - Anfänger-Themen 6
Kopak'rraf Korruptes zip File. Java Basics - Anfänger-Themen 0
T File für Einstellungen wird nicht geladen Java Basics - Anfänger-Themen 1
S Sounddatei in Jar File integrieren Java Basics - Anfänger-Themen 2
S Index File bauen Java Basics - Anfänger-Themen 5
T Anzeige, wie lange es noch dauert bis ein File gesendet ist. Java Basics - Anfänger-Themen 2
T filereader , file aus programm einlesen Java Basics - Anfänger-Themen 12
Ghostman1711 Itext PDF print File gelockt by Java Java Basics - Anfänger-Themen 15
N Email mit Anhang - File not Found Java Basics - Anfänger-Themen 1
K Interface Kein Bild im .jar-File Java Basics - Anfänger-Themen 15
S Bild in Jar-File mit ImageIO Java Basics - Anfänger-Themen 50
Syncopated Pandemonium Compiler-Fehler The constructor MP3File(File) refers to the missing type NoMPEGFramesException Java Basics - Anfänger-Themen 7
S File mit canRead() testen Java Basics - Anfänger-Themen 4
A file.delete funktioniert nicht Java Basics - Anfänger-Themen 15
K Classpath Lesen von Property-File Java Basics - Anfänger-Themen 1
S jar file Java Basics - Anfänger-Themen 19
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
B Dateityp von File bekommen Java Basics - Anfänger-Themen 2
E Große Datenmengen effizient in CSV File speichern Java Basics - Anfänger-Themen 4
I String zu File umwandeln Java Basics - Anfänger-Themen 2
N File virtuell ByteStream Java Basics - Anfänger-Themen 11
X Übergabeparameter Konstruktor (File) Java Basics - Anfänger-Themen 13
Anfänger2011 file.isDirectory() liefert falschen Wert!? Java Basics - Anfänger-Themen 1
ms_cikar Jar file mit resource erzuegen Java Basics - Anfänger-Themen 28
E lesen csv file column by column Java Basics - Anfänger-Themen 10
B Quellcode einelsen "line by line" (und abspeichern in file (txt) Java Basics - Anfänger-Themen 7
O Zip-File Inhalt einlesen Java Basics - Anfänger-Themen 3
V Erste Schritte Dateinamen aus einer FIle[] in eine List Java Basics - Anfänger-Themen 11
P Jar File Java Basics - Anfänger-Themen 3
B Probleme bei "Daten in CSV File schreiben". Java Basics - Anfänger-Themen 9
S CSV File - "Vergleichen und Sortieren" Java Basics - Anfänger-Themen 3
T Wieso kann ich das jar file nicht starten? Java Basics - Anfänger-Themen 5
S Resourcen-Dateien im Jar-File verfügbar machen (Intellij 14) Java Basics - Anfänger-Themen 14
A Wieso übergibt der nicht die bearbeitete txt file Java Basics - Anfänger-Themen 8
Ruvok Executable Jar File startet nicht Java Basics - Anfänger-Themen 3
J file.lenght spinnt ab 50mb Java Basics - Anfänger-Themen 7
B sehr lange Srings in File schreiben Java Basics - Anfänger-Themen 4
T File aus Classpath verwenden Java Basics - Anfänger-Themen 3
I Erste Schritte Resource Bundle - Alles in einem File oder mehrere? => Faktor Performance Java Basics - Anfänger-Themen 2
S The constructor File(URL) is undefined Java Basics - Anfänger-Themen 10
B .class-File mit Reflection auslesen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen


Oben