2013-04-27 23 views
5

Mam kilka plików i po ich pobraniu zamieniam je na zip przy użyciu JSZip, ale to nie działa w Internet Explorerze i Safari, ponieważ JSZip nie działa w IE z adresami URL niektórych treści.Tworzenie pliku ZIP z JavaScript (JSZip) nie działa w IE i Safari

var zip = new JSZip(); 
var linkArr=$(xml1).find('groupnode:eq('+id_no+')').find('link'); 
var linklength = $(linkArr).length; 

for(i=0;i<linklength;i++) 
{ 
    zip.file("../resources"+$(linkArr[i]).attr('src'),$(linkArr[i]).text()); 
} 

content = zip.generate(); 
location.href="data:application/zip;base64," + content; 

Czy znasz jakieś inne rozwiązania oferujące obsługę wielu przeglądarek?

+0

Witryna JSZip sugeruje, że wszystkie przeglądarki działają, ale tylko IE nie działa z URL-i niektórych treści, ale to nie działa z Safari. Możliwe, że możesz zmienić sposób, w jaki to robisz, aby działało. – pickypg

+2

wydaje się zachowywać w porządku w tym demo ':)' safari http://htanjo.github.io/jszip-demo/ –

+0

powyższe demo zawiesza Safari. Myślę, że informacje w odpowiedziach/komentarzach tutaj są nieaktualne, ponieważ twórca JSZip stwierdził, że wsparcie pobierania BLOBów nie istnieje w Safari lub IE. – volx757

Odpowiedz

3

http://stuk.github.io/jszip/

Dużą wzajemnej pomocy, w tym przeglądarki IE i Safari, problem leży w kodzie lub URL. Chciałbym dostosować adres URL i zbadać inny kod, który może powodować problemy przed przejściem do innego rozwiązania.

także przeczytać rozdział o problemach pliku w adresie URL I pod warunkiem że:

"Filename problems 
The biggest issue with JSZip is that the filenames are very awkward, Firefox generates filenames such as a5sZQRsx.zip.part (see bugs 367231 and 532230), and Safari isn't much better with just Unknown. Sadly there is no pure Javascript solution (and working in every browsers) to this. However... 

Solution-ish: Downloadify 

Downloadify uses a small Flash SWF to download files to a user's computer with a filename that you can choose. Doug Neiner has added the dataType option to allow you to pass a zip for downloading. Follow the Downloadify demo with the following changes: 

zip = new JSZip(); 
zip.add("Hello.", "hello.txt"); 
Downloadify.create('downloadify',{ 
... 
    data: function(){ 
    return zip.generate(); 
    }, 
... 
    dataType: 'base64' 
}); 
Other solution-ish: Blob URL 

With some recent browsers come a new way to download Blobs (a zip file for example) : blob urls. The download attribute on <a> allows you to give the name of the file. Blob urls start to be widely supported but this attribute is currently only supported in Chrome and Firefox (>= 20). See the example. 

var blob = zip.generate({type:"blob"}); 
myLink.href = window.URL.createObjectURL(blob); 
myLink.download = "myFile.zip";" 
Powiązane problemy