Kwaziwai vakomuredhi. Yakanaka pamaseva angu ekurwa
Shamwari dzakandikumbira kuti ndivagadzirire purazi rekusimudzira, uye pane kuvakwevera matemplate angu chaiwo, ndakarangarira chirongwa chinonakidza.
Ehe, ndisati ndachera mukati mezvitubu, ndakatarisa pane iyo Chrome inodhonza iyo yakagadzirwa zip archive ine configs, uye ipapo kero inotanga ne "blob:" yakandimirira, oops. Izvo zvatove pachena kuti sevhisi haiburitse chero chinhu munzira, kutaura zvazviri, zvese zvakaitwa najs. Chokwadi, iyo zip archive inogadzirwa nemutengi, browser, uye javascript pachayo. Avo. kunaka ndiko kuti chirongwa
Mushure mekuita purojekiti, ndakatanga kufunga kuti ndezvipi zvandaisarudza. Basa racho rakaomeswa nenyaya yekuti ndaisada kutsauka kubva padanho rekuti purojekiti irambe iri yekumberi kwakachena, pasina kana kumashure. Ehe, mhinduro yakareruka ingave yekukwevera kumusoro nodejs uye kuimanikidza kuti ibudise archive ine configs uchishandisa yakananga zvinongedzo.
Chaizvoizvo, pakanga pasina sarudzo dzakawanda. Kunyanya, imwe chete yakauya mupfungwa. Isu tinofanirwa kumisikidza zvigadziriso uye titore chinongedzo chatinogona kukopa kune server console kuti titore zip archive.
Mafaera akati wandei mune yakaguma zip archive airema zvishoma, chaizvo makirobhayiti mashoma. Mhinduro iripachena yaive yekutora base64 tambo kubva payakagadzirwa zip archive woikanda mubuffer, uchiri paserver ine rairo muconsole.
echo 'base64string' | base64 --decode > config.zip
tinogona kugadzira iyi zip faira.
Mune zviwanikwa zveprojekiti tinoona nzira yekugadzira zip archive:
$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',
});
};
zvese zviri nyore, uchishandisa raibhurari
saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');
uko zvirimo ndizvo zvinokonzeresa blob chinhu chezip archive.
Zvakanaka, chandaifanira kuita kuwedzera rimwe bhatani padivi paro uye pandakadzvanya pairi, ini ndaisazochengeta yakaguma zip archive kubrowser, asi tora base64 kodhi kubva mairi. Mushure mekutamba-famba zvishoma, ndakawana nzira mbiri, pane imwe chete yekurodhaZip:
$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',
});
};
Sezvaungave waona, ndakatamisa chizvarwa chezip archive pachayo kune yakavanzika gadziraZip nzira, zvichingodaro. Iyi iAngularJS, uye munyori pachake anonamatira kucallbacks uye haana kuzviita kuburikidza nezvipikirwa. downloadZip ichiri kuchengetedzaSekubuda, nepo downloadBase64 yakaita chimwe chinhu chakasiyana. Isu tinogadzira chinhu cheFayileReader chakauya kwatiri muhtml5 uye chatove chakanyanya
position: absolute;
z-index: -1;
opacity: 0;
izvo zvakandibvumira kuti ndivanze chinhu kubva pakuona uye kunyatsochisiya pane peji. Voila, basa rakapera, pandakadzvanya bhatani rangu, mutsara wakaita seuyu wakaiswa mubuffer:
echo 'base64string' | base64 --decode > config.zip
iyo yandakangoisa mukoni pane server uye pakarepo ndakagamuchira zip archive ine ese ma configs.
Uye, hongu, ndakatumira chikumbiro chekudhonza kumunyori, nekuti... iyo purojekiti inoshanda uye ine hupenyu, ndinoda kuona zvigadziriso kubva kumunyori uye ndine bhatani rangu) Kune avo vanofarira, hezvino
Kubudirira kwakanaka mose)
Source: www.habr.com