mirror of
https://github.com/KevinMidboe/immich.git
synced 2025-10-29 17:40:28 +00:00
fix(web): album download progress bar (#925)
This commit is contained in:
@@ -121,8 +121,9 @@ export class AlbumController {
|
||||
@Param('albumId', new ParseUUIDPipe({ version: '4' })) albumId: string,
|
||||
@Response({ passthrough: true }) res: Res,
|
||||
): Promise<any> {
|
||||
const { stream, filename } = await this.albumService.downloadArchive(authUser, albumId);
|
||||
const { stream, filename, filesize } = await this.albumService.downloadArchive(authUser, albumId);
|
||||
res.attachment(filename);
|
||||
res.setHeader('X-Immich-Content-Length-Hint', filesize);
|
||||
return stream;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -171,11 +171,13 @@ export class AlbumService {
|
||||
try {
|
||||
const archive = archiver('zip', { store: true });
|
||||
const stream = new StreamableFile(archive);
|
||||
let totalSize = 0;
|
||||
|
||||
for (const { assetInfo } of album.assets) {
|
||||
const { originalPath } = assetInfo;
|
||||
const name = `${assetInfo.exifInfo?.imageName || assetInfo.id}${extname(originalPath)}`;
|
||||
archive.file(originalPath, { name });
|
||||
totalSize += Number(assetInfo.exifInfo?.fileSizeInByte || 0);
|
||||
}
|
||||
|
||||
archive.finalize();
|
||||
@@ -183,6 +185,7 @@ export class AlbumService {
|
||||
return {
|
||||
stream,
|
||||
filename: `${album.albumName}.zip`,
|
||||
filesize: totalSize,
|
||||
};
|
||||
} catch (e) {
|
||||
Logger.error(`Error downloading album ${e}`, 'downloadArchive');
|
||||
|
||||
Reference in New Issue
Block a user