ሰላም ጓዶች። በእኔ የውጊያ አገልጋዮች ላይ ቆንጆ
ጓደኞቼ ለእነሱ የልማት እርሻ እንዳዘጋጅላቸው ጠየቁኝ እና የእኔን ልዩ አብነቶች ከመጎተት ይልቅ አንድ አስደሳች ፕሮጀክት ትዝ አለኝ
በእርግጥ፣ ወደ ምንጮቹ ከመቆፈሬ በፊት፣ Chrome የመነጨውን ዚፕ ማህደር ከውቅሮች ጋር የት እንደሚጎትተው ተመለከትኩኝ፣ እና እዚያ “ብሎብ:” የሚል አድራሻ እየጠበቀኝ ነበር፣ ኦፕ። አገልግሎቱ በመንገድ ላይ ምንም ነገር እንደማይፈጥር ቀድሞውኑ ግልጽ ሆኗል, በእርግጥ, ሁሉም በ js ነው. በእርግጥ የዚፕ ማህደር በደንበኛው፣ በአሳሹ እና በጃቫስክሪፕት በራሱ የተፈጠረ ነው። እነዚያ። ውበቱ ፕሮጀክቱ ነው
ፕሮጀክቱን ሹካ ካደረግኩ በኋላ ምርጫዎቼ ምን እንደሆኑ ማሰብ ጀመርኩ. ፕሮጀክቱ ያለ ምንም የኋላ ጫፍ ንጹህ የፊት-ፍጻሜ ሆኖ እንዲቀጥል ከሚለው ቅድመ ሁኔታ ማፈንገጥ ስላልፈለግኩ ስራው የተወሳሰበ ነበር። እርግጥ ነው፣ ቀላሉ መፍትሔ nodejs ን ማንሳት እና ቀጥታ አገናኞችን በመጠቀም ከውቅሮች ጋር ማህደር እንዲፈጥር ማስገደድ ነው።
በእውነቱ፣ ብዙ አማራጮች አልነበሩም። ይበልጥ በትክክል፣ ወደ አእምሮ የመጣው አንድ ብቻ ነው። የዚፕ ማህደር ለማግኘት አወቃቀሮችን ማዘጋጀት እና ወደ አገልጋይ ኮንሶል መቅዳት የምንችልበትን አገናኝ ማግኘት አለብን።
በውጤቱ ዚፕ ማህደር ውስጥ ያሉ በርካታ የጽሑፍ ፋይሎች ትንሽ፣ በጥሬው ጥቂት ኪሎባይት መዘኑ። ግልፅ የሆነው መፍትሄ ቤዝ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',
});
};
እርስዎ እንዳስተዋሉት፣ የዚፕ ማህደርን ትውልድ ወደ ግል የማመንጨት ዚፕ ዘዴ፣ ወዘተ. ይህ AngularJS ነው፣ እና ደራሲው ራሱ በመልሶ መደወል ላይ ተጣብቋል እና በተስፋ ቃል አልተተገበረም። ማውረጃ ዚፕ አሁንም እንደ ውፅዓት ማስቀመጥን አድርጓል፣ አውርድBase64 ግን ትንሽ የተለየ ነገር አድርጓል። በኤችቲኤምኤል 5 ውስጥ ወደ እኛ የመጣ እና ቀድሞውኑም የሆነ የፋይል አንባቢ ነገርን እንፈጥራለን
position: absolute;
z-index: -1;
opacity: 0;
ኤለመንቱን ከእይታ እንድደብቀው እና በእውነቱ በገጹ ላይ እንድተው አስችሎኛል። ቮይላ፣ ስራው ተጠናቀቀ፣ ቁልፌን ጠቅ ሳደርግ፣ እንደዚህ ያለ መስመር በመጠባበቂያው ውስጥ ተቀመጠ።
echo 'base64string' | base64 --decode > config.zip
በቀላሉ በአገልጋዩ ላይ ባለው ኮንሶል ውስጥ የለጠፍኩት እና ወዲያውኑ ከሁሉም ውቅሮች ጋር የዚፕ ማህደር ደረሰኝ።
እና፣ ለጸሃፊው የጉብኝት ጥያቄ ልኬዋለሁ፣ ምክንያቱም... ፕሮጀክቱ ንቁ እና ሕያው ነው፣ ከጸሐፊው ማሻሻያዎችን ለማየት እና የራሴ ቁልፍ እንዲኖረኝ እፈልጋለሁ) ፍላጎት ላላቸው ሰዎች ፣ እዚህ አለ
መልካም ልማት ለሁሉም)
ምንጭ: hab.com