Beannachdan, a chompanaich. Bòidheach air na frithealaichean sabaid agam
Dh'iarr caraidean orm tuathanas leasachaidh a stèidheachadh dhaibh, agus an àite a bhith gan slaodadh na teamplaidean sònraichte agam, chuimhnich mi air pròiseact inntinneach
Gu dearbh, mus deach mi a-steach do na stòran, choimhead mi air far a bheil Chrome a’ tarraing an tasglann zip a chaidh a chruthachadh le configs, agus bha seòladh a’ tòiseachadh le “blob:" a’ feitheamh rium, oops. Tha e air fàs soilleir mar-thà nach eil an t-seirbheis a’ gineadh dad air an t-slighe, gu dearbh, tha e uile air a dhèanamh le js. Gu dearbh, tha an tasglann zip air a chruthachadh leis an neach-dèiligidh, brabhsair, agus javascript fhèin. An fheadhainn sin. is e am bòidhchead gu bheil am pròiseact
Às deidh dhomh am pròiseact a chuir air dòigh, thòisich mi a’ smaoineachadh air na roghainnean a bh’ agam. Bha an obair iom-fhillte leis nach robh mi airson gluasad bhon chumha gum bu chòir don phròiseact fuireach mar fhìor cheann-aghaidh, gun deireadh-cùil sam bith. Gu dearbh, is e am fuasgladh as sìmplidh nodejs a tharraing suas agus toirt air tasglann a ghineadh le configs a ’cleachdadh ceanglaichean dìreach.
Gu fìrinneach, cha robh mòran roghainnean ann. Nas mionaidiche, cha tàinig ach aon gu inntinn. Feumaidh sinn na configs a chuir air dòigh agus ceangal fhaighinn as urrainn dhuinn a chopaigeadh gu consol an fhrithealaiche gus tasglann zip fhaighinn.
Bha grunn fhaidhlichean teacsa anns an tasglann zip a thàinig às a sin beagan cuideam, gu litearra beagan kilobytes. B ’e am fuasgladh follaiseach an sreang base64 fhaighinn bhon tasglann zip a chaidh a chruthachadh agus a thilgeil a-steach don bhufair, fhad‘ s a bha e air an fhrithealaiche leis an àithne sa chonsail
echo 'base64string' | base64 --decode > config.zip
b’ urrainn dhuinn an aon fhaidhle zip seo a chruthachadh.
Ann an goireasan a’ phròiseict chì sinn dòigh air tasglann zip a chruthachadh:
$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',
});
};
tha a h-uile dad gu math sìmplidh, a’ cleachdadh an leabharlann
saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');
far a bheil susbaint mar thoradh blob mar thoradh air an tasglann zip.
Ceart gu leòr, cha robh agam ach putan eile a chuir ri thaobh agus nuair a phutas mi air, cha bhithinn a’ sàbhaladh an tasglann zip a thàinig às dhan bhrobhsair, ach a’ faighinn an còd base64 bhuaithe. Às deidh dhomh fìdhlearachd timcheall beagan, fhuair mi dòighean 2, an àite dìreach aon luchdachadh sìos Zip:
$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',
});
};
Mar is dòcha gu bheil thu air mothachadh, ghluais mi ginealach an tasglann zip fhèin chun mhodh prìobhaideach GenerationZip, agus mar sin air adhart. Is e seo AngularJS, agus tha an t-ùghdar fhèin a’ cumail ri fios air ais agus cha do chuir e an gnìomh e tro gheallaidhean. downloadZip fhathast a’ sàbhaladhAs mar thoradh, agus rinn downloadBase64 rudeigin beagan eadar-dhealaichte. Bidh sinn a’ cruthachadh rud FileReader a thàinig thugainn ann an html5 agus a tha gu math mar-thà
position: absolute;
z-index: -1;
opacity: 0;
a leig leam an dà chuid an eileamaid fhalach bhon t-sealladh agus dha-rìribh fhàgail air an duilleag. Voila, chaidh an obair a chrìochnachadh, nuair a phutas mi air a’ phutan agam, chaidh loidhne mar seo a chuir anns a’ bhufair:
echo 'base64string' | base64 --decode > config.zip
a chuir mi dìreach a-steach don consol air an fhrithealaiche agus fhuair mi tasglann zip sa bhad leis a h-uile rèiteachadh.
Agus, gu dearbh, chuir mi iarrtas tarraing chun an ùghdair, oir... tha am pròiseact gnìomhach agus beòthail, bu mhath leam ùrachaidhean bhon ùghdar fhaicinn agus am putan agam fhèin a bhith agam) Dhaibhsan aig a bheil ùidh, seo e
Leasachadh sona a h-uile duine)
Source: www.habr.com