2016-04-05 16 views
0

Github depomu güncellediğimde otomatik olarak güncellenen heroku'da barındırılan bir web uygulamasına sahibim. Kullanıcıyı ile tüm uygulama dosyalarını kendi klasörleri, görüntüleri vb istemci tarafında bir zip olarak yerel olarak çalıştırabilirsiniz böylece bir zip olarak etkinleştirmek istiyorum. Ayrıca, tarayıcısında indirilmek için zorlamadan önce, kullanıcı yorumlarını içeren bir dosya eklemek istiyorum. Kullanıcının tüm uygulamayı istemci tarafından nasıl indirmesini sağlayabilirim?

github onu yönlendirerek bunu yapmak için bir yol bulmuş (ama github indirilecek bu aslında sadece bir zip zorlar, onu orada yönlendirme olmaz):

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

Ama bu çözüm doesn Benim için çalışıyorum çünkü 'a eklemek istiyorum, bu kullanıcı indirme isteğinin anından itibaren oluşturulacak başka bir dosyayı zip.

Bunun için bir çözümü olan var mı? Dosyaları almak ve bunları paketlemek için jszip'i kullanarak herokku'ya istekte bulunarak bunu yapmanın bir yolu var mı?

+1

Bunu [web uygulaması önbelleğe] bakmak isteyebilirsiniz (http://www.html5rocks.com/en/tutorials/appcache/beginner/). Bu şekilde, web uygulamasına normal URL ile aynı URL ile erişilir, ancak çevrimiçi uygulamaya bağlanamazsa, otomatik olarak yerel olarak önbelleğe alınmış bir sürüme geri döner. – Frxstrem

+0

Küçük bir not olarak, tüm modern tarayıcılar web uygulaması önbelleğe almayı desteklerken, [hizmet çalışanları] (http://www.html5rocks.com/en/tutorials/service-worker/introduction/) lehine ve kullanımdan kaldırılmıştır. genellikle daha güçlü olan ve web uygulaması önbellekleme ile bazı sorunları gidermek. Ancak, uygulama önbellek desteğinin yakında herhangi bir zamanda kaybolacağından şüpheliyim. – Frxstrem

+0

@Frxstrem web uygulaması önbellekleme hakkında iyi bir nokta var, ben bunu kontrol etmemiştim, ama sadece bunu kurmak zor olduğunu söylediğiniz gibi, aynı zamanda kullanıcı gezinirken bazı dosyaları dinamik olarak yüklemek istiyorum. Uygulamanın. Bu yüzden, kullanıcının tüm uygulamayı indirmesine izin vermenin daha iyi bir seçenek olduğunu düşünüyorum. – ThanosSar

cevap

0

Github'un hizmeti, JSZipUtils ve jszip kullanarak çözümü buldum. İşte kod kime yardım olabilir için:

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 

}); 
İlgili konular