• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Zip Datei erstellen

Die Zips, die wir anbieten, erstellen wir offline mit entsprechender Software und laden sie dann auf die Download-Server hoch.
Ja, sinnvoll ist die serverseitige Erzeugung nur, wenn man variable Archive erstellt, also beispielsweise auswählen kann, welche Dateien man zum Download hinzufügen will. Oder wenn man Bilder gesammelt herunterladen möchte...
 
Ihr habt natürlich alle Recht indem ihr hinterfragt wozu eigentlich und es gibt auch keinen wirklichen Grund der es rechtfertigt, trotzdem möchte ich das jetzt erstmal so machen. Noch eine Frage: Ich würde die Dateien unabhängig vom Format einfach in das Archiv packen, etwas in der Art
Code:
zip.file("smile.gif",{ binary: true }); zip.file("smile.pdf",{ binary: true });...
. Leider funktioniert das nicht. Im folgenden noch mal der ganze Code die smile.gif liegt natürlich im selben Verzeichnis.

Code:
<html>
 <head> 
 <script type="text/javascript" src="dist/jszip.js"></script> 
 <script type="text/javascript" src="dist/jquery-2.1.1.min.js"></script> 
 
 </head> 
 <body>
 <div id="dl">hallo</div> 
 </body> 
 <script type="text/javascript"> 
 var zip = new JSZip();
zip.file("hello.txt", "Hello[p my)6cxsw2q");
//zip.file("smile.gif", "R0lGODdhBQAFAIACAAAAAP/eACwAAAAABQAFAAACCIwPkWerClIBADs=", {base64: true});
zip.file("smile",{ binary: true });
//zip.folder("nested").file("hello.txt", "Hello World\n");
var buff = zip.generate({type : "arraybuffer"});
var blob = new Blob([buff], {type : 'application/octet-stream'});
$("#dl").append('<a href="' + URL.createObjectURL(blob) + '" download="test.zip">download</a>');
 
 </script> 
 </html>
 
Es scheint mir, zip.file muss nur einmalig verwendet werden, zum eröffnen der Repräsentation im Speicher.
Danach kommen die einzelnen Inhalte.
Zum Abschluss dann zip.generate und SaveAs.

Steht so zumindest im Beispiel von JSzip.
 
Zuletzt bearbeitet:
Noch eine Frage: Ich würde die Dateien unabhängig vom Format einfach in das Archiv packen, etwas in der Art
Code:
zip.file("smile.gif",{ binary: true }); zip.file("smile.pdf",{ binary: true });...
. Leider funktioniert das nicht.
du gibst ja auch keine daten an.

- - - Aktualisiert - - -

Es scheint mir, zip.file muss nur einmalig verwendet werden, zum eröffnen der Repräsentation im Speicher.
zip.file musst du für jedes file, welches du im zip haben möchtest aufrufen
 
Doch ich gebe Daten an und zwar smile.gif.
ok, den namen der datei kann man auch als daten betrachten, aber ich meine den inhalt der datei. wenn du eine datei smile.gif in deinem zip anlegst, musst du sie ja auch noch mit etwas füllen. deswegen erwartet die funktiion file als parameter den namen, die daten, optionen. steht in der docu
 
wenn du eine datei smile.gif in deinem zip anlegst, musst du sie ja auch noch mit etwas füllen. deswegen erwartet die funktiion file als parameter den namen, die daten, optionen.

zum Beispiel:

Code:
var img = zip.folder("images");
img.file("smile.gif", imgData, {base64: true});
 
Da habe ich nicht genau genug gelesen bzw. die Code Schnippsel falsch interpretiert. Wie bekomme ich dann eine Datei von der Festplatte in das Archiv?

Code:
zip.file("smile.gif", fs.readFile("smile.gif"));
funktioniert nicht.
 
Den Pfad kannst und darfst du (zu Recht) nicht im JS direkt angeben. Sonst könnte ja jede beliebige Seite einfach deine komplette Festplatte lesen.
Du musst da ein <input type="file"> haben, in dem der Nutzer dann die Datei auf seinem Rechner auswählt.
 
Ja ich fand Bsp. wie diese, geht das in die richtige Richtung
Code:
var xhr = new XMLHttpRequest();
xhr.open('GET', '/path/to/image.png', true);
xhr.responseType = 'arraybuffer';

xhr.onload = function(e) {
   var zip = new JSZip();
   zip.file("smile.gif", this.response, {base64: true});
...
};
 
Zuletzt bearbeitet:
Kann man dem FileReader Objekt die Datei übergeben falls sie über einen Link verankert ist?
Nein. Der einzige Weg ist über ein <input type="file">, wo der Nutzer eine Datei auswählt. Alles andere wäre ja ein riesen Sicherheitsloch - oder willst du, dass jede x-beliebige Webseite deine komplette Festplatte lesen kann?
Ja ich fand Bsp. wie diese, geht das in die richtige Richtung
Das ist ein Beispiel, wo die Datei vom Server geladen wird. Ich dachte, du wolltest von der lokalen Platte des Nutzers laden...
 
Zurück
Oben