Ẹ ki, awọn ẹlẹgbẹ. Lẹwa lori awọn olupin ija mi
Awọn ọrẹ beere lọwọ mi lati ṣeto oko idagbasoke fun wọn, ati dipo fifa wọn awọn awoṣe pato mi, Mo ranti iṣẹ akanṣe kan ti o nifẹ si.
Nitoribẹẹ, ṣaaju ki o to walẹ sinu awọn orisun, Mo wo ibiti Chrome yoo fa ibi ipamọ zip ti ipilẹṣẹ pẹlu awọn atunto, ati pe adirẹsi kan wa ti o bẹrẹ pẹlu “blob:” n duro de mi, oops. O ti han tẹlẹ pe iṣẹ naa ko ṣe ipilẹṣẹ ohunkohun ni ọna, ni otitọ, gbogbo rẹ jẹ nipasẹ js. Lootọ, ibi ipamọ zip jẹ ipilẹṣẹ nipasẹ alabara, ẹrọ aṣawakiri, ati JavaScript funrararẹ. Awon. awọn ẹwa ni wipe ise agbese
Lẹhin ti forking ise agbese, Mo bẹrẹ lati ro nipa ohun ti awọn aṣayan mi. Iṣẹ naa jẹ idiju nipasẹ otitọ pe Emi ko fẹ lati yapa kuro ninu ipo pe iṣẹ akanṣe yẹ ki o wa ni iwaju-ipari mimọ, laisi eyikeyi ẹhin-ipari. Nitoribẹẹ, ojutu ti o rọrun julọ yoo jẹ lati fa awọn nodejs soke ki o fi ipa mu u lati ṣe agbekalẹ iwe-ipamọ pẹlu awọn atunto nipa lilo awọn ọna asopọ taara.
Ni otitọ, ko si ọpọlọpọ awọn aṣayan. Ni deede diẹ sii, ọkan nikan wa si ọkan. A nilo lati ṣeto awọn atunto ati gba ọna asopọ kan ti a le daakọ si console olupin lati gba ibi ipamọ zip kan.
Awọn faili ọrọ pupọ ninu ibi ipamọ zip ti o yọrisi jẹ iwuwo diẹ, ni itumọ ọrọ gangan kilobytes diẹ. Ojutu ti o han gbangba ni lati gba okun base64 lati ibi ipamọ zip ti ipilẹṣẹ ati jabọ sinu ifipamọ, lakoko ti o wa lori olupin pẹlu aṣẹ ninu console.
echo 'base64string' | base64 --decode > config.zip
a le ṣẹda faili zip kanna.
Ninu awọn orisun iṣẹ akanṣe a rii ọna kan fun ṣiṣẹda ibi ipamọ zip kan:
$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',
});
};
ohun gbogbo jẹ ohun rọrun, lilo awọn ìkàwé
saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');
nibiti akoonu jẹ abajade blob ohun ti ibi ipamọ zip.
O dara, gbogbo ohun ti Mo ni lati ṣe ni ṣafikun bọtini miiran lẹgbẹẹ rẹ ati nigbati Mo tẹ lori rẹ, Emi kii yoo ṣafipamọ faili zip ti o yọrisi si ẹrọ aṣawakiri, ṣugbọn gba koodu base64 lati ọdọ rẹ. Lẹhin ti fidding ni ayika diẹ, Mo ni awọn ọna meji, dipo igbasilẹZip kan:
$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',
});
};
Bii o ti ṣe akiyesi, Mo gbe iran ti ibi ipamọ zip funrararẹ si ọna ipilẹṣẹ ipilẹṣẹ ikọkọ, ati bẹbẹ lọ. Eyi jẹ AngularJS, ati pe onkọwe funrararẹ duro si awọn ipe pada ati pe ko ṣe nipasẹ awọn ileri. downloadZip tun ṣe fipamọBi bi abajade, lakoko ti downloadBase64 ṣe nkan ti o yatọ diẹ. A ṣẹda ohun kan FileReader ti o wa si wa ni html5 ati pe o ti jẹ ohun ti tẹlẹ
position: absolute;
z-index: -1;
opacity: 0;
eyiti o fun mi laaye lati tọju nkan naa lati wiwo ati fi silẹ ni oju-iwe naa. Voila, iṣẹ-ṣiṣe naa ti pari, nigbati mo tẹ bọtini mi, laini bii eyi ni a gbe sinu ifipamọ:
echo 'base64string' | base64 --decode > config.zip
eyiti Mo rọrun lẹẹmọ sinu console lori olupin ati lẹsẹkẹsẹ gba ibi ipamọ zip pẹlu gbogbo awọn atunto.
Ati pe, nitorinaa, Mo fi ibeere fifa kan ranṣẹ si onkọwe, nitori… Ise agbese na n ṣiṣẹ ati iwunlere, Emi yoo fẹ lati rii awọn imudojuiwọn lati ọdọ onkọwe ati ni bọtini ti ara mi) Fun awọn ti o nifẹ, eyi ni
Idunnu idagbasoke gbogbo eniyan)
orisun: www.habr.com