mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-19 13:21:46 +00:00
support Apple Wallet pkpass files
- add "pkpass" to the default allowed upload extensions - on download, set Content-Type: application/vnd.apple.pkpass and Content-Disposition: inline for .pkpass files so Safari (iOS/macOS) hands them off to Apple Wallet instead of downloading as a blob
This commit is contained in:
@@ -98,6 +98,13 @@ router.get('/:id/download', (req: Request, res: Response) => {
|
|||||||
if (!safe) return res.status(403).json({ error: 'Forbidden' });
|
if (!safe) return res.status(403).json({ error: 'Forbidden' });
|
||||||
if (!fs.existsSync(resolved)) return res.status(404).json({ error: 'File not found' });
|
if (!fs.existsSync(resolved)) return res.status(404).json({ error: 'File not found' });
|
||||||
|
|
||||||
|
// Serve Apple Wallet passes inline with the canonical MIME type so Safari
|
||||||
|
// (iOS/macOS) hands them off to Wallet instead of downloading as a blob.
|
||||||
|
if (path.extname(resolved).toLowerCase() === '.pkpass') {
|
||||||
|
res.setHeader('Content-Type', 'application/vnd.apple.pkpass');
|
||||||
|
res.setHeader('Content-Disposition', `inline; filename="${path.basename(file.original_name || resolved)}"`);
|
||||||
|
}
|
||||||
|
|
||||||
res.sendFile(resolved);
|
res.sendFile(resolved);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import { TripFile } from '../types';
|
|||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
export const MAX_FILE_SIZE = 50 * 1024 * 1024; // 50 MB
|
export const MAX_FILE_SIZE = 50 * 1024 * 1024; // 50 MB
|
||||||
export const DEFAULT_ALLOWED_EXTENSIONS = 'jpg,jpeg,png,gif,webp,heic,pdf,doc,docx,xls,xlsx,txt,csv';
|
export const DEFAULT_ALLOWED_EXTENSIONS = 'jpg,jpeg,png,gif,webp,heic,pdf,doc,docx,xls,xlsx,txt,csv,pkpass';
|
||||||
export const BLOCKED_EXTENSIONS = ['.svg', '.html', '.htm', '.xml'];
|
export const BLOCKED_EXTENSIONS = ['.svg', '.html', '.htm', '.xml'];
|
||||||
export const filesDir = path.join(__dirname, '../../uploads/files');
|
export const filesDir = path.join(__dirname, '../../uploads/files');
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user