سلام ، ساٿيو. منهنجي جنگي سرور تي خوبصورت
دوستن مون کي انھن لاءِ ڊولپمينٽ فارم ٺاھڻ لاءِ چيو ۽ انھن کي پنھنجي مخصوص ٽيمپليٽس کي ڇڪڻ بدران مون کي ھڪ دلچسپ پروجيڪٽ ياد آيو.
يقينن، ذريعن کي ڳولهڻ کان اڳ، مون ڏٺو ته ڪروم ڪٿي ٺاهيل زپ آرڪائيو کي ترتيب سان ٺاهي ٿو، ۽ اتي "بلاب:" سان شروع ٿيندڙ هڪ پتو منهنجي انتظار ۾ هو، اوهه. اهو اڳ ۾ ئي واضح ٿي چڪو آهي ته خدمت رستي ۾ ڪجھ به پيدا نٿو ڪري، حقيقت ۾، اهو سڀ ڪجهه js پاران ڪيو ويو آهي. درحقيقت، زپ آرڪائيو ڪلائنٽ، برائوزر، ۽ جاوا اسڪرپٽ طرفان ٺاهيل آهي. اهي. خوبصورتي اها آهي ته پروجيڪٽ
پروجيڪٽ کي فورڪ ڪرڻ کان پوء، مون سوچڻ شروع ڪيو ته منهنجا اختيار ڪهڙا هئا. اهو ڪم ان ڪري پيچيده ٿي ويو هو جو مان ان شرط کان انحراف ڪرڻ نه ٿي چاهيان ته پروجيڪٽ هڪ خالص فرنٽ ائنڊ هجي، بغير ڪنهن پٺاڻ جي. يقينن، سڀ کان آسان حل نوڊجز کي ڇڪڻ ۽ ان کي سڌو لنڪس استعمال ڪندي ترتيبن سان گڏ آرڪائيو پيدا ڪرڻ لاء مجبور ڪيو ويندو.
حقيقت ۾، اتي ڪيترائي اختيار نه هئا. وڌيڪ واضح طور تي، صرف هڪ ذهن ۾ آيو. اسان کي ترتيب ڏيڻ جي ضرورت آھي ۽ ھڪڙي لنڪ حاصل ڪريو جيڪا اسان سرور ڪنسول ڏانھن نقل ڪري سگھون ٿا زپ آرڪائيو حاصل ڪرڻ لاء.
نتيجي ۾ زپ آرڪائيو ۾ ڪيتريون ئي ٽيڪسٽ فائلون ڪافي وزن، لفظي طور تي ڪجھ ڪلوبائٽس. واضع حل اهو هو ته ٺاهيل زپ آرڪائيو مان بنيادي 64 اسٽرنگ حاصل ڪيو ۽ ان کي بفر ۾ اڇلايو، جڏهن ته سرور تي ڪنسول ۾ حڪم سان
echo 'base64string' | base64 --decode > config.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',
});
};
هر شيء بلڪل سادو آهي، لائبريري استعمال ڪندي
saveAs(content, 'nginxconfig.io-' + $scope.getDomains().join(',') + '.zip');
جتي مواد زپ آرڪائيو جو نتيجو بلب اعتراض آهي.
ٺيڪ آهي، مون کي اهو ڪرڻو هو ته ان جي اڳيان هڪ ٻيو بٽڻ شامل ڪيو ۽ جڏهن مون ان تي ڪلڪ ڪيو، مان نتيجو واري زپ آرڪائيو کي برائوزر ۾ محفوظ نه ڪندس، پر ان مان بنيادي 64 ڪوڊ حاصل ڪريان. ٿوري دير کان پوءِ ، مون کي 2 طريقا مليا ، بجاءِ صرف هڪ ڊائون لوڊ زپ:
$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',
});
};
جيئن توهان شايد محسوس ڪيو هوندو، مون زپ آرڪائيو جي نسل کي پاڻ ڏانهن منتقل ڪيو پرائيويٽ generateZip طريقو، وغيره. هي AngularJS آهي، ۽ ليکڪ پاڻ کي ڪال بڪ ڏانهن ڇڪي ٿو ۽ واعدو ذريعي ان تي عمل نه ڪيو. ڊائون لوڊ زپ اڃا تائين محفوظ ڪيوآئوٽ جي طور تي، جڏهن ته ڊائون لوڊ بيس 64 ڪجھ مختلف ڪيو. اسان هڪ FileReader اعتراض ٺاهيو جيڪو اسان وٽ html5 ۾ آيو ۽ اڳ ۾ ئي ڪافي آهي
position: absolute;
z-index: -1;
opacity: 0;
جنهن مون کي اجازت ڏني ته ٻنهي عنصر کي ڏسڻ کان لڪايو ۽ اصل ۾ ان کي صفحي تي ڇڏي ڏيو. Voila، ڪم مڪمل ڪيو ويو، جڏھن مون پنھنجي بٽڻ تي ڪلڪ ڪيو، ھڪڙي لڪير وانگر بفر ۾ رکيل ھئي:
echo 'base64string' | base64 --decode > config.zip
جنهن کي مون صرف سرور تي ڪنسول ۾ پيسٽ ڪيو ۽ فوري طور تي سڀني ترتيبن سان گڏ هڪ زپ آرڪائيو حاصل ڪيو.
۽، يقينا، مون ليکڪ ڏانهن هڪ پل جي درخواست موڪلي، ڇاڪاڻ ته ... پروجيڪٽ فعال ۽ جاندار آهي، مان ليکڪ کان تازه ڪاريون ڏسڻ چاهيان ٿو ۽ منهنجو پنهنجو بٽڻ آهي) دلچسپي رکندڙن لاءِ، هتي آهي
سڀني کي ترقي مبارڪ)
جو ذريعو: www.habr.com