Lumelang, baheso. E ntle ho li-server tsa ka tsa ntoa
Metsoalle e ile ea nkōpa hore ke ba etsetse polasi ea nts'etsopele, 'me ho e-na le ho ba hulela li-template tsa ka tse khethehileng, ke ile ka hopola morero o thahasellisang.
Ehlile, pele ke cheka mehloling, ke ile ka sheba moo Chrome e hulang polokelo ea zip e hlahisitsoeng ka li-configs, 'me ho na le aterese e qalang ka "blob:" e nkemetse, oops. Ho se ho hlakile hore tšebeletso ha e hlahise letho tseleng, ha e le hantle, tsohle li etsoa ke js. Ehlile, polokelo ea zip e hlahisoa ke moreki, sebatli le javascript ka boeona. Tseo. botle ke hore morero oo
Ka mor'a ho qeta morero ona, ke ile ka qala ho nahana hore na likhetho tsa ka ke life. Mosebetsi ona o ne o thatafalitsoe ke taba ea hore ke ne ke sa batle ho kheloha boemo ba hore morero o lule e le oa pele o hloekileng, o se nang morao. Ha e le hantle, tharollo e bonolo ka ho fetisisa e ka ba ho hula li-nodejs le ho e qobella ho hlahisa li-archive tse nang le li-configs li sebelisa lihokelo tse tobileng.
Ha e le hantle, ho ne ho se na likhetho tse ngata. Hantle-ntle, ke e le 'ngoe feela e ileng ea tla kelellong. Re hloka ho theha li-configs le ho fumana sehokelo seo re ka se kopitsang ho khomphutha ea seva ho fumana polokelo ea zip.
Lifaele tse 'maloa tse ngotsoeng ka har'a polokelo ea zip tse hlahisitsoeng li ne li le boima bo itseng, li-kilobyte tse seng kae. Tharollo e totobetseng e ne e le ho fumana khoele ea base64 ho tloha polokelong ea zip e hlahisitsoeng ebe o e lahlela ka har'a buffer, athe ho seva e nang le taelo ho console.
echo 'base64string' | base64 --decode > config.zip
re ka etsa faele ena ea zip.
Mehloling ea morero re bona mokhoa oa ho hlahisa polokelo ea 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',
});
};
ntho e 'ngoe le e' ngoe e bonolo, u sebelisa laebrari
saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');
moo litaba li hlahisoang ke blob ea polokelo ea zip.
Ho lokile, sohle seo ke neng ke tlameha ho se etsa ke ho kenya konopo e 'ngoe haufi le eona mme ha ke tobetsa ho eona, nke ke ka boloka polokelo ea zip e hlahisitsoeng ho sebatli, empa fumana khoutu ea base64 ho eona. Kamora ho ts'oara hanyane, ke ile ka fumana mekhoa e 2, ho fapana le downloadZip e le 'ngoe feela:
$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',
});
};
Joalokaha e ka 'na eaba u hlokometse, ke tsamaisitse moloko oa polokelo ea zip ka boeona ho mokhoa oa poraefete oa generateZip, joalo-joalo. Ena ke AngularJS, 'me mongoli ka boeena o khomarela li-callbacks' me ha aa ka a phethahatsa ka litšepiso. downloadZip e ntse e bolokile joalo ka tlhahiso, ha downloadBase64 e entse ho hong ho fapaneng hanyane. Re theha ntho ea FileReader e tlileng ho rona ka html5 mme e se e ntse e le teng
position: absolute;
z-index: -1;
opacity: 0;
e ileng ea ntumella hore ke pate ntho hore e se ke ea bonoa ebe ke e tlohela leqepheng. Voila, mosebetsi o phethiloe, ha ke tobetsa konopo ea ka, mola o kang ona o behiloe ka har'a buffer:
echo 'base64string' | base64 --decode > config.zip
eo ke e kentseng ka har'a khomphutha ho seva mme hang-hang ka fumana polokelo ea zip e nang le litlhophiso tsohle.
Mme, ehlile, ke rometse kopo ya ho hula ho mongodi, hobane... projeke e sebetsa ebile e monate, ke kopa ho bona lintlafatso ho tsoa ho sengoli le ho ba le konopo ea ka) Bakeng sa ba nang le thahasello, ke ena
Tsoelopele e monate bohle)
Source: www.habr.com