diff --git a/backend/app/api/files.py b/backend/app/api/files.py index a074615..da64e07 100644 --- a/backend/app/api/files.py +++ b/backend/app/api/files.py @@ -283,8 +283,11 @@ def download_file(file_id): if not filepath.exists(): return jsonify({'error': 'Datei auf Datentraeger nicht gefunden'}), 404 - return send_file(str(filepath), mimetype=f.mime_type, as_attachment=True, - download_name=f.name) + # inline=1 renders the file in-browser (used by PDF/image previews). + # Default is attachment so normal download buttons still save to disk. + inline = request.args.get('inline', '0') == '1' + return send_file(str(filepath), mimetype=f.mime_type, + as_attachment=not inline, download_name=f.name) def _download_folder_as_zip(folder): diff --git a/frontend/src/views/PreviewView.vue b/frontend/src/views/PreviewView.vue index 0f7005a..6f01f11 100644 --- a/frontend/src/views/PreviewView.vue +++ b/frontend/src/views/PreviewView.vue @@ -157,7 +157,7 @@ async function loadPreview() { previewType.value = data.type if (data.type === 'pdf' || data.type === 'image') { - previewUrl.value = getTokenUrl(`/api/files/${fileId}/download`) + previewUrl.value = getTokenUrl(`/api/files/${fileId}/download?inline=1`) canEdit.value = false } else if (data.type === 'html') { htmlContent.value = data.content