Aloha mai e nā hoa. Nani ma kaʻu mau kikowaena kaua
Ua noi mai nā hoaaloha iaʻu e hoʻonohonoho i kahi mahiʻai hoʻomohala no lākou, a ma kahi o ka huki ʻana iā lākou i kaʻu mau template kikoʻī, hoʻomanaʻo wau i kahi papahana hoihoi.
ʻOiaʻiʻo, ma mua o ka ʻeli ʻana i nā kumu, nānā au i kahi e huki ai ʻo Chrome i ka waihona zip i hana ʻia me nā configs, a aia kahi helu e hoʻomaka ana me ka "blob:" e kali ana iaʻu, oops. Ua ʻike ʻia ʻaʻole hana ka lawelawe i kekahi mea ma ke ala, ʻoiaʻiʻo, ua hana ʻia e js. ʻOiaʻiʻo, hoʻokumu ʻia ka waihona zip e ka mea kūʻai aku, ka polokalamu kele pūnaewele, a me ka javascript ponoʻī. ʻO kēlā mau. ʻo ka nani ka papahana
Ma hope o ka hana ʻana i ka papahana, hoʻomaka wau e noʻonoʻo i kaʻu mau koho. Ua paʻakikī ka hana ma ka ʻoiaʻiʻo ʻaʻole wau makemake e haʻalele i ke ʻano o ka papahana e noho maʻemaʻe i mua, me ka ʻole o ka hope. ʻOiaʻiʻo, ʻo ka hopena maʻalahi loa ka huki ʻana i nā nodejs a hoʻoikaika iā ia e hana i kahi waihona me nā configs me ka hoʻohana ʻana i nā loulou pololei.
ʻOiaʻiʻo, ʻaʻole nui nā koho. ʻOi aku ka pololei, hoʻokahi wale nō i komo i ka manaʻo. Pono mākou e hoʻonohonoho i nā configs a loaʻa kahi loulou i hiki iā mākou ke kope i ka console server e kiʻi i kahi waihona zip.
ʻO kekahi mau faila kikokikona i loko o ka waihona zip i loaʻa mai ua kaumaha iki, he mau kilobytes maoli. ʻO ka hopena ʻike ʻia ʻo ka loaʻa ʻana o ke kaula base64 mai ka waihona zip i hana ʻia a hoʻolei i loko o ka buffer, ʻoiai ma ka server me ke kauoha i ka console.
echo 'base64string' | base64 --decode > config.zip
hiki iā mākou ke hana i kēia faila zip like.
Ma nā kumuwaiwai papahana ʻike mākou i kahi ala no ka hana ʻana i kahi waihona 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',
});
};
maʻalahi nā mea a pau, me ka hoʻohana ʻana i ka waihona
saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');
kahi maʻiʻo ka hopena blob object o ka waihona zip.
ʻAe, ʻo kaʻu mea e hana ai ʻo ka hoʻohui ʻana i kahi pihi ʻē aʻe ma hope o ia a i ka wā i kaomi ai au iā ia, ʻaʻole wau e mālama i ka waihona zip i ka polokalamu kele pūnaewele, akā e kiʻi i ka code base64 mai ia mea. Ma hope o ka huli ʻana i kahi liʻiliʻi, loaʻa iaʻu nā ala ʻelua, ma kahi o hoʻokahi downloadZip:
$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',
});
};
E like me kāu i ʻike ai, ua hoʻoneʻe au i ka hanauna o ka waihona zip iā ia iho i ke ʻano hana generateZip pilikino, a pēlā aku. ʻO AngularJS kēia, a ʻo ka mea kākau ponoʻī e pili ana i nā callbacks a ʻaʻole i hoʻokō ma o nā ʻōlelo hoʻohiki. Ua mālama ʻo downloadZip ma ke ʻano he huahana, ʻoiai ʻo downloadBase64 i hana i kahi mea ʻokoʻa. Hana mākou i kahi mea FileReader i hiki mai iā mākou ma html5 a ua paʻa
position: absolute;
z-index: -1;
opacity: 0;
i ʻae iaʻu e hūnā i ka mea mai ka ʻike a waiho maoli ma ka ʻaoʻao. Voila, ua pau ka hana, i koʻu kaomi ʻana i kaʻu pihi, ua kau ʻia kahi laina e like me kēia i loko o ka buffer:
echo 'base64string' | base64 --decode > config.zip
kahi aʻu i hoʻopili wale ai i ka console ma ka kikowaena a loaʻa koke i kahi waihona zip me nā configs āpau.
A, ʻoiaʻiʻo, ua hoʻouna wau i kahi noi huki i ka mea kākau, no ka mea... ʻeleu a ola ka papahana, makemake au e ʻike i nā mea hou mai ka mea kākau a loaʻa kaʻu pihi ponoʻī) No ka poʻe hoihoi, eia
Hauʻoli hoʻomohala a pau)
Source: www.habr.com