mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
share support for attachment file download
This commit is contained in:
parent
44bcfd47c0
commit
0234ff5fca
@ -62,12 +62,29 @@ function renderText(result, note) {
|
||||
for (const linkEl of document.querySelectorAll("a")) {
|
||||
const href = linkEl.getAttribute("href");
|
||||
|
||||
if (href?.startsWith("#")) {
|
||||
const notePathSegments = href.split("/");
|
||||
if (!href?.startsWith("#")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const linkRegExp = /attachmentId=([a-zA-Z0-9_]+)/g;
|
||||
let attachmentMatch
|
||||
if (attachmentMatch = linkRegExp.exec(href)) {
|
||||
const attachmentId = attachmentMatch[1];
|
||||
const attachment = shaca.getAttachment(attachmentId);
|
||||
|
||||
if (attachment) {
|
||||
linkEl.setAttribute("href", `api/attachments/${attachmentId}/download`);
|
||||
linkEl.classList.add(`attachment-link`);
|
||||
linkEl.classList.add(`role-${attachment.role}`);
|
||||
linkEl.innerText = attachment.title;
|
||||
} else {
|
||||
linkEl.removeAttribute("href");
|
||||
}
|
||||
} else {
|
||||
const [notePath] = href.split('?');
|
||||
const notePathSegments = notePath.split("/");
|
||||
const noteId = notePathSegments[notePathSegments.length - 1];
|
||||
const linkedNote = shaca.getNote(noteId);
|
||||
|
||||
if (linkedNote) {
|
||||
linkEl.setAttribute("href", linkedNote.shareId);
|
||||
linkEl.classList.add(`type-${linkedNote.type}`);
|
||||
|
@ -8,6 +8,7 @@ const shareRoot = require("./share_root");
|
||||
const contentRenderer = require("./content_renderer");
|
||||
const assetPath = require("../services/asset_path");
|
||||
const appPath = require("../services/app_path");
|
||||
const utils = require("../services/utils.js");
|
||||
|
||||
function getSharedSubTreeRoot(note) {
|
||||
if (note.noteId === shareRoot.SHARE_ROOT_NOTE_ID) {
|
||||
@ -253,6 +254,29 @@ function register(router) {
|
||||
}
|
||||
});
|
||||
|
||||
router.get('/share/api/attachments/:attachmentId/download', (req, res, next) => {
|
||||
shacaLoader.ensureLoad();
|
||||
|
||||
let attachment;
|
||||
|
||||
if (!(attachment = checkAttachmentAccess(req.params.attachmentId, req, res))) {
|
||||
return;
|
||||
}
|
||||
|
||||
addNoIndexHeader(attachment.note, res);
|
||||
|
||||
const utils = require("../services/utils");
|
||||
|
||||
const filename = utils.formatDownloadTitle(attachment.title, null, attachment.mime);
|
||||
|
||||
res.setHeader('Content-Disposition', utils.getContentDisposition(filename));
|
||||
|
||||
res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
||||
res.setHeader('Content-Type', attachment.mime);
|
||||
|
||||
res.send(attachment.getContent());
|
||||
});
|
||||
|
||||
// used for PDF viewing
|
||||
router.get('/share/api/notes/:noteId/view', (req, res, next) => {
|
||||
shacaLoader.ensureLoad();
|
||||
|
Loading…
x
Reference in New Issue
Block a user