Skip to content

Commit

Permalink
feat(server): specify names for thumbnail files
Browse files Browse the repository at this point in the history
  • Loading branch information
eligao committed Dec 1, 2024
1 parent 56d2309 commit 08cb47d
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 1 deletion.
6 changes: 5 additions & 1 deletion server/src/services/asset-media.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import { AuthRequest } from 'src/middleware/auth.guard';
import { BaseService } from 'src/services/base.service';
import { requireUploadAccess } from 'src/utils/access';
import { asRequest, getAssetFiles, onBeforeLink } from 'src/utils/asset.util';
import { ImmichFileResponse } from 'src/utils/file';
import { getFilenameExtension, getFileNameWithoutExtension, ImmichFileResponse } from 'src/utils/file';
import { mimeTypes } from 'src/utils/mime-types';
import { fromChecksum } from 'src/utils/request';
import { QueryFailedError } from 'typeorm';
Expand Down Expand Up @@ -217,8 +217,12 @@ export class AssetMediaService extends BaseService {
if (!filepath) {
throw new NotFoundException('Asset media not found');
}
let fileName = getFileNameWithoutExtension(asset.originalFileName);
fileName+= `_${size}`;
fileName+= getFilenameExtension(filepath);

return new ImmichFileResponse({
fileName,
path: filepath,
contentType: mimeTypes.lookup(filepath),
cacheControl: CacheControl.PRIVATE_WITH_CACHE,
Expand Down
2 changes: 2 additions & 0 deletions server/src/utils/file.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ export class ImmichFileResponse {
public readonly path!: string;
public readonly contentType!: string;
public readonly cacheControl!: CacheControl;
public readonly fileName?: string;

constructor(response: ImmichFileResponse) {
Object.assign(this, response);
Expand Down Expand Up @@ -56,6 +57,7 @@ export const sendFile = async (
}

res.header('Content-Type', file.contentType);
if(file.fileName) res.header('Content-Disposition', `inline; filename="${file.fileName}"`);

Check failure on line 60 in server/src/utils/file.ts

View workflow job for this annotation

GitHub Actions / Test & Lint Server

Expected { after 'if' condition

const options: SendFileOptions = { dotfiles: 'allow' };
if (!isAbsolute(file.path)) {
Expand Down

0 comments on commit 08cb47d

Please sign in to comment.