download: fix zip file name

cap
Varun Patil 2022-12-06 11:53:31 -08:00
parent 2011433536
commit 56df346c92
2 changed files with 16 additions and 10 deletions

View File

@ -77,7 +77,8 @@ class AlbumsController extends ApiBase
} }
// Get download handle // Get download handle
$handle = \OCA\Memories\Controller\DownloadController::createHandle($files); $albumName = explode('/', $name)[1];
$handle = \OCA\Memories\Controller\DownloadController::createHandle($albumName, $files);
return new JSONResponse(['handle' => $handle], Http::STATUS_OK); return new JSONResponse(['handle' => $handle], Http::STATUS_OK);
} }

View File

@ -47,18 +47,20 @@ class DownloadController extends ApiBase
} }
// Return id // Return id
return new JSONResponse(['handle' => $this->createHandle($files)]); $handle = self::createHandle('memories', $files);
return new JSONResponse(['handle' => $handle]);
} }
/** /**
* Get a handle for downloading files. * Get a handle for downloading files.
* *
* @param string $name Name of zip file
* @param int[] $files * @param int[] $files
*/ */
public static function createHandle(array $files): string public static function createHandle(string $name, array $files): string
{ {
$handle = \OC::$server->get(ISecureRandom::class)->generate(16, ISecureRandom::CHAR_ALPHANUMERIC); $handle = \OC::$server->get(ISecureRandom::class)->generate(16, ISecureRandom::CHAR_ALPHANUMERIC);
\OC::$server->get(ISession::class)->set("memories_download_ids_{$handle}", $files); \OC::$server->get(ISession::class)->set("memories_download_{$handle}", [$name, $files]);
return $handle; return $handle;
} }
@ -76,13 +78,15 @@ class DownloadController extends ApiBase
{ {
// Get ids from request // Get ids from request
$session = \OC::$server->get(ISession::class); $session = \OC::$server->get(ISession::class);
$key = "memories_download_ids_{$handle}"; $key = "memories_download_{$handle}";
$fileIds = $session->get($key); $info = $session->get($key);
$session->remove($key); $session->remove($key);
if (null === $fileIds) { if (null === $info) {
return new JSONResponse([], Http::STATUS_NOT_FOUND); return new JSONResponse([], Http::STATUS_NOT_FOUND);
} }
$name = $info[0] . '-' . \date('YmdHis');;
$fileIds = $info[1];
/** @var int[] $fileIds */ /** @var int[] $fileIds */
$fileIds = array_filter(array_map('intval', $fileIds), function (int $id): bool { $fileIds = array_filter(array_map('intval', $fileIds), function (int $id): bool {
@ -100,7 +104,7 @@ class DownloadController extends ApiBase
} }
// Download multiple files // Download multiple files
$this->multiple($fileIds); // exits $this->multiple($name, $fileIds); // exits
} }
/** /**
@ -124,9 +128,10 @@ class DownloadController extends ApiBase
/** /**
* Download multiple files. * Download multiple files.
* *
* @param string $name Name of zip file
* @param int[] $fileIds * @param int[] $fileIds
*/ */
private function multiple(array &$fileIds) private function multiple(string $name, array &$fileIds)
{ {
// Disable time limit // Disable time limit
$executionTime = (int) \OC::$server->get(IniGetWrapper::class)->getNumeric('max_execution_time'); $executionTime = (int) \OC::$server->get(IniGetWrapper::class)->getNumeric('max_execution_time');
@ -141,7 +146,7 @@ class DownloadController extends ApiBase
$streamer = new \OC\Streamer($this->request, $size, \count($fileIds)); $streamer = new \OC\Streamer($this->request, $size, \count($fileIds));
// Create a zip file // Create a zip file
$streamer->sendHeaders('download'); $streamer->sendHeaders($name);
// Multiple files might have the same name // Multiple files might have the same name
// So we need to add a number to the end of the name // So we need to add a number to the end of the name