fixed issue #584, improved download name for zip/tarballs

This commit is contained in:
Björn Ebbrecht
2015-04-29 22:29:00 +02:00
parent dbc5b0e53f
commit 8bf31a1e55

View File

@@ -87,13 +87,24 @@ class TreeController implements ControllerProviderInterface
. substr($tree, 0, 2) . DIRECTORY_SEPARATOR . substr($tree, 0, 2) . DIRECTORY_SEPARATOR
. substr($tree, 2) . substr($tree, 2)
. '.' . '.'
. $format; . $format;
if (!file_exists($file)) { if (!file_exists($file)) {
$repository->createArchive($tree, $file, $format); $repository->createArchive($tree, $file, $format);
} }
return new BinaryFileResponse($file); /**
* Generating name for downloading, lowercasing and removing all non
* ascii and special characters
*/
$filename = strtolower($branch);
$filename = preg_replace('#[^a-z0-9]#', '_', $filename);
$filename = preg_replace('#_+#', '_', $filename);
$filename = $filename . '.' . $format;
$response = new BinaryFileResponse($file);
$response->setContentDisposition('attachment', $filename);
return $response;
})->assert('format', '(zip|tar)') })->assert('format', '(zip|tar)')
->assert('repo', $app['util.routing']->getRepositoryRegex()) ->assert('repo', $app['util.routing']->getRepositoryRegex())
->assert('branch', $app['util.routing']->getBranchRegex()) ->assert('branch', $app['util.routing']->getBranchRegex())