mirror of
https://github.com/zadam/trilium.git
synced 2025-06-06 09:58:32 +02:00
local image storage fixes
This commit is contained in:
parent
8a92786012
commit
ef61e22f1f
@ -18,7 +18,7 @@ async function returnImage(req, res) {
|
||||
res.set('Content-Type', 'image/png');
|
||||
return res.send(fs.readFileSync(RESOURCE_DIR + '/db/image-deleted.png'));
|
||||
}
|
||||
image.mime = image.mime.replace("image/svg", "image/svg+xml");
|
||||
|
||||
res.set('Content-Type', image.mime);
|
||||
|
||||
res.send(await image.getContent());
|
||||
|
@ -44,6 +44,12 @@ function getImageType(buffer) {
|
||||
}
|
||||
}
|
||||
|
||||
function getImageMimeFromExtension(ext) {
|
||||
ext = ext.toLowerCase();
|
||||
|
||||
return 'image/' + (ext === 'svg' ? 'svg+xml' : ext);
|
||||
}
|
||||
|
||||
async function updateImage(noteId, uploadBuffer, originalName) {
|
||||
const {buffer, imageFormat} = await processImage(uploadBuffer, originalName, true);
|
||||
|
||||
@ -51,7 +57,7 @@ async function updateImage(noteId, uploadBuffer, originalName) {
|
||||
|
||||
await noteRevisionService.createNoteRevision(note);
|
||||
|
||||
note.mime = 'image/' + imageFormat.ext.toLowerCase();
|
||||
note.mime = getImageMimeFromExtension(imageFormat.ext);
|
||||
|
||||
await note.setContent(buffer);
|
||||
|
||||
@ -72,7 +78,7 @@ async function saveImage(parentNoteId, uploadBuffer, originalName, shrinkImageSw
|
||||
title: fileName,
|
||||
content: buffer,
|
||||
type: 'image',
|
||||
mime: 'image/' + imageFormat.ext.toLowerCase(),
|
||||
mime: getImageMimeFromExtension(imageFormat.ext),
|
||||
isProtected: parentNote.isProtected && protectedSessionService.isProtectedSessionAvailable()
|
||||
});
|
||||
|
||||
|
@ -280,11 +280,13 @@ async function downloadImage(noteId, imageUrl) {
|
||||
const downloadImagePromises = {};
|
||||
|
||||
function replaceUrl(content, url, imageNote) {
|
||||
return content.replace(new RegExp(url, "g"), `api/images/${imageNote.noteId}/${imageNote.title}`);
|
||||
const quoted = url.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
||||
|
||||
return content.replace(new RegExp(quoted, "g"), `api/images/${imageNote.noteId}/${imageNote.title}`);
|
||||
}
|
||||
|
||||
async function downloadImages(noteId, content) {
|
||||
const re = /<img\s.*?src=['"]([^'">]+)['"]/ig;
|
||||
const re = /<img.*?\ssrc=['"]([^'">]+)['"]/ig;
|
||||
let match;
|
||||
|
||||
while (match = re.exec(content)) {
|
||||
@ -323,7 +325,7 @@ async function downloadImages(noteId, content) {
|
||||
}
|
||||
}
|
||||
|
||||
await Promise.all(Object.values(downloadImagePromises)).then(() => {
|
||||
Promise.all(Object.values(downloadImagePromises)).then(() => {
|
||||
setTimeout(async () => {
|
||||
const imageNotes = await repository.getNotes(Object.values(imageUrlToNoteIdMapping));
|
||||
|
||||
@ -344,6 +346,8 @@ async function downloadImages(noteId, content) {
|
||||
}
|
||||
}, 5000);
|
||||
});
|
||||
|
||||
return content;
|
||||
}
|
||||
|
||||
async function saveLinks(note, content) {
|
||||
@ -363,7 +367,7 @@ async function saveLinks(note, content) {
|
||||
content = findExternalLinks(content, foundLinks);
|
||||
content = findIncludeNoteLinks(content, foundLinks);
|
||||
|
||||
downloadImages(note.noteId, content);
|
||||
content = await downloadImages(note.noteId, content);
|
||||
}
|
||||
else if (note.type === 'relation-map') {
|
||||
findRelationMapLinks(content, foundLinks);
|
||||
|
@ -158,7 +158,7 @@ function getContentDisposition(filename) {
|
||||
return `file; filename="${sanitizedFilename}"; filename*=UTF-8''${sanitizedFilename}`;
|
||||
}
|
||||
|
||||
const STRING_MIME_TYPES = ["application/x-javascript", "image/svg"];
|
||||
const STRING_MIME_TYPES = ["application/x-javascript", "image/svg+xml"];
|
||||
|
||||
function isStringNote(type, mime) {
|
||||
return ["text", "code", "relation-map", "search"].includes(type)
|
||||
|
Loading…
x
Reference in New Issue
Block a user