Я разрабатываю веб-приложение с laravel и angularjs (я новичок в обоих), в котором, когда вы нажимаете на кнопку, вы должны загрузить репозиторий github (или клонировать его)
Я знаю, что если я добавлю "href='/:owner/:repo/archive/master.zip'
к тегу привязки, его можно будет загрузить, но я не хочу, чтобы папка с именем "repo-master"
У меня есть идея клонировать хранилище, используя exec("git clone clone_url");
, а затем каким-то образом сжать его и связать его с сетью, но я не думаю, что это лучшее решение.
РЕДАКТИРОВАТЬ:
Проблема загрузки .zip поскольку «repo-master.zip» - это не только имя zip, но и папка внутри, так как он также называет «repo-master».
Я решил это так:
$module = Module::findOrFail($id);
$clone = $module->link_repo.".git";
$name_module = $module->name;
$zip_file = $name_module.'.zip'; // Name of our archive to download
exec("git clone ". $clone);
$zip = new \ZipArchive();
$zip->open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);
$path = "C:/laragon/www/project/public/".$name_module;
$files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($path));
foreach ($files as $name => $file)
{
// We're skipping all subfolders
if (!$file->isDir()) {
$filePath = $file->getRealPath();
// extracting filename with substr/strlen
$relativePath = $name_module."/". substr($filePath, strlen($path) + 1);
$zip->addFile($filePath, $relativePath);
}
}
$zip->close();
Ссылка