2016-04-05 8 views
0

Also habe ich eine Web-App in Heroku gehostet, die automatisch aktualisiert wird, wenn ich mein Github-Repository aktualisiere. Ich möchte den Benutzer ermöglichen, die alle App-Dateien mit ihren Ordnern, Bildern usw. als Zip von der Client-Seite herunterladen, so dass er es lokal offline ausführen kann. Ich möchte auch eine Datei mit Benutzerkommentaren zu dieser Zip hinzufügen, bevor ich erzwinge, dass es in seinem Browser heruntergeladen wird.Wie kann ich dem Benutzer ermöglichen, die gesamte Anwendung von der Client-Seite herunterzuladen?

fand ich einen Weg, es zu tun, indem sie ihn auf Github Umleitung (aber das wird ihn eigentlich nicht, dass es umleiten, wird es zwingen, nur eine Zip von Github heruntergeladen werden):

window.location.replace("https://github.com/foo/FOO/archive/master.zip"); 

Aber diese Lösung doesn 't Arbeit für mich, weil ich hinzufügen zu diesem Zip eine andere Datei, die im Moment der Benutzer Download-Anforderung erstellt werden soll.

Hat jemand eine Lösung dafür? Gibt es eine Möglichkeit, dies zu tun, indem Sie an herokku Anfragen stellen, um die Dateien zu erhalten, und die jszip verwenden, um sie zu packen?

+1

Sie können einen Blick haben möchten auf [Web-App-Caching] (http://www.html5rocks.com/en/tutorials/appcache/beginner/). Auf diese Weise wird auf die Web-App mit der gleichen URL wie normal zugegriffen, fällt jedoch automatisch auf eine lokal zwischengespeicherte Version zurück, wenn keine Verbindung zur Online-App hergestellt werden kann. – Frxstrem

+0

Als eine kleine Anmerkung, während alle modernen Browser Web-App-Caching unterstützen, wurde es veraltet und zugunsten von [Service-Mitarbeiter] (http://www.html5rocks.com/en/tutorials/service-worker/introduction/), die in der Regel leistungsfähiger sind und einige der Probleme beim Web-App-Caching beheben. Ich bezweifle jedoch, dass die App-Caching-Unterstützung in absehbarer Zeit wieder verschwinden wird. – Frxstrem

+0

@Frxstrem Guter Punkt dort über die Web-App-Caching, ich hatte nicht ausgecheckt, aber nicht nur, wie Sie sagen, es ist schwierig, es einzurichten, ich möchte auch in der Lage sein, einige Dateien dynamisch zu laden, während Benutzer die App Ich denke, es ist eine bessere Option, den Benutzer die gesamte Anwendung herunterladen zu lassen. – ThanosSar

Antwort

0

Ich fand die Lösung mit Github-Service, JSZipUtils und JSzip. Hier ist der Code für die es vielleicht von Hilfe:

var content = null; 

JSZipUtils.getBinaryContent("https://github.com/foo/FOO/archive/master.zip", function(err, data) { 
    if(err) { 
    throw err; // or handle err 
    } 
    var zip = new JSZip(data); 

    // to remove a not needed file 
    zip.remove("CWAPP-master/abc.js"); 

    // to add a custom file    
    zip.file('CWAPP-master/myClientSideFile.js',file); 

    content = zip.generate({type:"blob"}); 
    saveAs(content, 'myZip'); // force download 

});