Sanibonani bakwethu. Kuhle kumaseva wami wokulwa
Abangane bangicele ukuba ngibabekele ipulazi lokuthuthukisa, futhi esikhundleni sokubahudulela izifanekiso zami ezithile, ngakhumbula iphrojekthi ethokozisayo.
Impela, ngaphambi kokumba emithonjeni, ngibheke lapho i-Chrome idonsa khona ingobo yomlando ye-zip ekhiqiziwe ngezilungiselelo, futhi kukhona ikheli eliqala ngokuthi βblob:β belingilindile, eshu. Sekuvele kwacaca ukuthi isevisi ayikhiqizi lutho endleleni, empeleni, konke kwenziwa ngu-js. Ngempela, ingobo yomlando ye-zip yenziwa iklayenti, isiphequluli, kanye ne-javascript ngokwayo. Labo. ubuhle ukuthi iphrojekthi
Ngemva kokuphothula iphrojekthi, ngaqala ukucabanga ngokuthi yiziphi izinketho zami. Umsebenzi waba nzima ngoba ngangingafuni ukuchezuka esimweni sokuthi iphrojekthi kufanele ihlale iyisiphetho esimsulwa, ngaphandle kokubuyela emuva. Kunjalo, isixazululo esilula kungaba ukudonsa ama-nodejs bese uyiphoqa ukuthi ikhiqize ingobo yomlando enezilungiselelo kusetshenziswa izixhumanisi eziqondile.
Empeleni, zazingekho izinketho eziningi. Ngokunembayo, munye kuphela owafika engqondweni. Sidinga ukusetha izilungiselelo futhi sithole isixhumanisi esingasikopisha kukhonsoli yeseva ukuze sithole ingobo yomlando ye-zip.
Amafayela ombhalo amaningana kungobo yomlando ye-zip abe nesisindo esincane, amakhilobhayithi ambalwa ngokwezwi nezwi. Isixazululo esisobala kwakuwukuthola iyunithi yezinhlamvu ye-base64 kusuka kungobo yomlando ye-zip ekhiqiziwe bese uyiphonsa ku-buffer, ngenkathi ikuseva enomyalo kukhonsoli.
echo 'base64string' | base64 --decode > config.zip
singadala leli fayela le-zip elifanayo.
Kuzinsiza zephrojekthi sibona indlela yokukhiqiza ingobo yomlando ye-zip:
$scope.downloadZip = function() {
var zip = new JSZip();
var sourceCodes = $window.document.querySelectorAll('main .file .code.source');
for (var i = 0; i < sourceCodes.length; i++) {
var sourceCode = sourceCodes[i];
var name = sourceCode.dataset.filename;
var content = sourceCode.children[0].children[0].innerText;
if (!$scope.isSymlink() && name.match(/^sites-available//)) {
name = name.replace(/^sites-available//, 'sites-enabled/');
}
zip.file(name, content);
if (name.match(/^sites-available//)) {
zip.file(name.replace(/^sites-available//, 'sites-enabled/'), '../' + name, {
unixPermissions: parseInt('120755', 8),
});
}
}
zip.generateAsync({
type: 'blob',
platform: 'UNIX',
}).then(function(content) {
saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');
});
gtag('event', $scope.getDomains().join(','), {
event_category: 'download_zip',
});
};
yonke into ilula, usebenzisa umtapo wolwazi
saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');
lapho okuqukethwe kuwumphumela we-blob yengobo yomlando ye-zip.
Kulungile, obekufanele ngikwenze nje ukungeza enye inkinobho eduze kwayo futhi lapho ngichofoza kuyo, bengingeke ngilondoloze ingobo yomlando ye-zip ewumphumela esipheqululini, kodwa ngithole ikhodi ye-base64 kuyo. Ngemuva kokuzulazula kancane, ngathola izindlela ezi-2, esikhundleni se-downloadZip eyodwa kuphela:
$scope.downloadZip = function() {
generateZip(function (content) {
saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');
});
gtag('event', $scope.getDomains().join(','), {
event_category: 'download_zip',
});
};
$scope.downloadBase64 = function() {
generateZip(function (content) {
var reader = new FileReader();
reader.readAsDataURL(content);
reader.onloadend = function() {
var base64 = reader.result.replace(/^data:.+;base64,/, '');
// Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ base64 ΠΊΠ°ΠΊ ΡΠ°Π· Π½ΡΠΆΠ½ΡΠΉ ΠΌΠ½Π΅ zip Π°ΡΡ
ΠΈΠ² Π² Π²ΠΈΠ΄Π΅ base64 ΡΡΡΠΎΠΊΠΈ
}
});
gtag('event', $scope.getDomains().join(','), {
event_category: 'download_base64',
});
};
Njengoba kungenzeka ukuthi ubonile, ngihambise ukwakhiwa kwengobo yomlando ye-zip ngokwayo endleleni eyimfihlo ye-genericZip, njalonjalo. Lena yi-AngularJS, futhi umbhali ngokwakhe unamathela kuma-callbacks futhi akazange ayisebenzise ngezithembiso. i-downloadZip isalondolozaAs njengokuphumayo, kuyilapho i-downloadBase64 yenza okuthile okuhluke kancane. Sakha into yeFayileReader eze kithi ku-html5 futhi isivele ilungile
position: absolute;
z-index: -1;
opacity: 0;
okungivumele ukuthi ngifihle i-elementi ukuze ngingayiboni futhi ngiyishiye ekhasini. Voila, umsebenzi uqediwe, lapho ngichofoza inkinobho yami, umugqa ofana nalona wafakwa kubhafa:
echo 'base64string' | base64 --decode > config.zip
engivele ngayinamathisela kukhonsoli kuseva futhi ngathola ngokushesha ingobo yomlando ye-zip enakho konke ukulungiselelwa.
Futhi, kunjalo, ngithumele isicelo sokudonsa kumbhali, ngoba... iphrojekthi iyasebenza futhi iyaphila, ngingathanda ukubona izibuyekezo ezivela kumbhali futhi ngibe nenkinobho yami) Kulabo abanentshisekelo, nansi
Intuthuko ejabulisayo nonke)
Source: www.habr.com