mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
enex import: attempt to get correct mime from Buffer
This commit is contained in:
parent
c8ec86e537
commit
31cfede7a7
@ -33,6 +33,7 @@
|
|||||||
"electron-in-page-search": "1.3.2",
|
"electron-in-page-search": "1.3.2",
|
||||||
"express": "4.16.4",
|
"express": "4.16.4",
|
||||||
"express-session": "1.15.6",
|
"express-session": "1.15.6",
|
||||||
|
"file-type": "10.7.0",
|
||||||
"fs-extra": "7.0.1",
|
"fs-extra": "7.0.1",
|
||||||
"get-port": "4.1.0",
|
"get-port": "4.1.0",
|
||||||
"helmet": "3.15.0",
|
"helmet": "3.15.0",
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
const sax = require("sax");
|
const sax = require("sax");
|
||||||
|
const fileType = require('file-type');
|
||||||
const stream = require('stream');
|
const stream = require('stream');
|
||||||
const xml2js = require('xml2js');
|
const xml2js = require('xml2js');
|
||||||
const log = require("../log");
|
const log = require("../log");
|
||||||
@ -222,7 +223,26 @@ async function importEnex(file, parentNote) {
|
|||||||
|
|
||||||
const mediaRegex = new RegExp(`<en-media hash="${hash}"[^>]*>`, 'g');
|
const mediaRegex = new RegExp(`<en-media hash="${hash}"[^>]*>`, 'g');
|
||||||
|
|
||||||
|
const fileTypeFromBuffer = fileType(resource.content);
|
||||||
|
if (fileTypeFromBuffer) {
|
||||||
|
// If fileType returns something for buffer, then set the mime given
|
||||||
|
resource.mime = fileTypeFromBuffer.mime;
|
||||||
|
}
|
||||||
|
|
||||||
|
const createResourceNote = async () => {
|
||||||
|
const resourceNote = (await noteService.createNote(noteEntity.noteId, resource.title, resource.content, {
|
||||||
|
attributes: resource.attributes,
|
||||||
|
type: 'file',
|
||||||
|
mime: resource.mime
|
||||||
|
})).note;
|
||||||
|
|
||||||
|
const resourceLink = `<a href="#root/${resourceNote.noteId}">${utils.escapeHtml(resource.title)}</a>`;
|
||||||
|
|
||||||
|
noteEntity.content = noteEntity.content.replace(mediaRegex, resourceLink);
|
||||||
|
}
|
||||||
|
|
||||||
if (["image/jpeg", "image/png", "image/gif"].includes(resource.mime)) {
|
if (["image/jpeg", "image/png", "image/gif"].includes(resource.mime)) {
|
||||||
|
try {
|
||||||
const originalName = "image." + resource.mime.substr(6);
|
const originalName = "image." + resource.mime.substr(6);
|
||||||
|
|
||||||
const { url } = await imageService.saveImage(resource.content, originalName, noteEntity.noteId);
|
const { url } = await imageService.saveImage(resource.content, originalName, noteEntity.noteId);
|
||||||
@ -236,17 +256,13 @@ async function importEnex(file, parentNote) {
|
|||||||
// otherwise image would be removed since no note would include it
|
// otherwise image would be removed since no note would include it
|
||||||
note.content += imageLink;
|
note.content += imageLink;
|
||||||
}
|
}
|
||||||
|
} catch (e) {
|
||||||
|
log.error("error when saving image from ENEX file: " + e);
|
||||||
|
await createResourceNote();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const resourceNote = (await noteService.createNote(noteEntity.noteId, resource.title, resource.content, {
|
await createResourceNote();
|
||||||
attributes: resource.attributes,
|
|
||||||
type: 'file',
|
|
||||||
mime: resource.mime
|
|
||||||
})).note;
|
|
||||||
|
|
||||||
const resourceLink = `<a href="#root/${resourceNote.noteId}">${utils.escapeHtml(resource.title)}</a>`;
|
|
||||||
|
|
||||||
noteEntity.content = noteEntity.content.replace(mediaRegex, resourceLink);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user