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

Zip Datei erstellen

Shibb

New member
Hallo.

Drei Links der Form
Code:
<a href="pfad/zur/datei1">download datei1</a>
<a href="pfad/zur/datei2">download datei2</a>
<a href="pfad/zur/datei3">download datei3</a>
sollen zu einem Archiv zusammengefasst werden, indem die Dateien gezippt werden und zum Download bereitgestellt werden. Ich habe dazu die Bibliothek JSZip gefunden. Blicke aber noch nicht durch wie ich bei einem onklick die Dateien packen lasse und in einem Anker bereitstelle.
 
wäre es nicht einfacher, die dateien auf dem server zu zippen, außerdem wirst du keine datei auf dem client erstellt bekommen.
 
hesst schrieb:
nicht unbedingt, man kann es nur nicht speichern
Doch steht alles da:
How to write a file / give it to the user
Beispiel:
Download the generated zip file

Damit wäre das speichern geklärt.

Die lokalen Dateien wirst du wohl mit XHR2 hochladen müssen und in einen Arraybuffer zwischenspeichern. Den Arraybuffer sollte man dann zippen können, aber wie kann ich der API auch nicht entnehmen.
Bei der Data URI sache bin ich nicht sicher ob das nicht schon veraltet ist.

Aber interessantes Thema, suche gerade auch nach Zippen in Browser, irgendwie muss das gehen.
MfG xorg1990
 
Doch steht alles da:
aber nur über flash und das dürften die meisten deaktiviert haben, data-uri ist auch beschränkt

Damit wäre das speichern geklärt.
nein, dateien speichern geht nicht

Den Arraybuffer sollte man dann zippen können, aber wie kann ich der API auch nicht entnehmen.
file(name, data [,options])

Bei der Data URI sache bin ich nicht sicher ob das nicht schon veraltet ist.
ältere browser unterstützen sie nicht, aber wichtiger, die größe ist beschränkt, opera war da ganz knausrig - oder ein ie ... nicht ganz sicher

Aber interessantes Thema, suche gerade auch nach Zippen in Browser, irgendwie muss das gehen.
wo soll da der sinn sein? ich lade daten vom server und zippe sie dann auf dem client? falls die übertragung nicht sowieso schon gezipt wird, noch schlimmer
 
hesst schrieb:
wo soll da der sinn sein? ich lade daten vom server und zippe sie dann auf dem client?

Also ich Programmire einen QRSS viewer und die Daten rendere ich in eine Canvas. Insgesamt sind das 6 oder mehr Bilder und da kann man schon mal darüber nachdenken alles als zip zu downloaden.
Was Shibb machen will k.a.

hesst schrieb:
einen blob erzeugen und als link anbieten
Macht das nicht die FileSaver.js?

Steht zumindest hier so geschrieben:
With recent browsers, the easiest way is to use saveAs or a polyfill, see FileSaver.js :
 
Also ich Programmire einen QRSS viewer und die Daten rendere ich in eine Canvas. Insgesamt sind das 6 oder mehr Bilder und da kann man schon mal darüber nachdenken alles als zip zu downloaden.
ok, dagegen spricht ja nichts

scheint so

Steht zumindest hier so geschrieben:
so genau hatte ich mir das nicht angesehen, weil sie dort von der File Writer API sprechen.

With recent browsers, the easiest way is to use saveAs or a polyfill, see FileSaver.js :
genau deswegen habe ich nicht mehr weitergelesen, die File Writer API wurde abgeschafft
 
ich habe mir das jsZip Archiv auf dem Desktop gespeichert und wollte folgendes mal testen:

Code:
 <script type="text/javascript" src="dist/jszip.js">

var zip = new JSZip();
zip.file("Hello.txt", "Hello World\n");
var img = zip.folder("images");
img.file("test/smile.gif", imgData, {base64: true});
var content = zip.generate({type:"blob"});
// see FileSaver.js
saveAs(content, "example.zip");

</script>

leider funktioniert es nicht. Man könnte saveAs auch zu

Code:
myLink.href = window.URL.createObjectURL(content);
myLink.download = "myFile.zip";"

ändern. Wenn ich die index teste, erscheint die Meldung
This browser doesn't support blobs
 
Zuletzt bearbeitet:
Code:
var zip = new JSZip();
zip.file("hello.txt", "Hello[p my)6cxsw2q");
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>');
 
Ja jetzt gehts. Danke.

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.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>
 
Zuletzt bearbeitet:
Aber warum erstellst du das Zip mit den Dateien nicht gleich mit entsprechender Software auf dem PC und lädst due Zip dann auf den Server und bietest sie zum Download an?

ZipJs und JSZip machen ja nur Sinn, wenn Dateien Serverseitig, abhängig von Useraktion erstellt werden oder vorhandene Zips direkt im Browser entpackt werden sollen.
 
Zurück
Oben