BookStackApp/BookStack · error · Error
Not an image file
Error message
Not an image file
What it means
Guard in the legacy TinyMCE editor's uploadImageFile rejecting a File that is null or has a non-image MIME type, so paste/drop handling only uploads actual images. Input at fault: the pasted or dropped file whose type does not start with 'image'.
Source
Thrown at resources/js/wysiwyg-tinymce/drop-paste-handling.js:17
import {Clipboard} from '../services/clipboard.ts';
let wrap;
let draggedContentEditable;
function hasTextContent(node) {
return node && !!(node.textContent || node.innerText);
}
/**
* Upload an image file to the server
* @param {File} file
* @param {int} pageId
*/
async function uploadImageFile(file, pageId) {
if (file === null || file.type.indexOf('image') !== 0) {
throw new Error('Not an image file');
}
const remoteFilename = file.name || `image-${Date.now()}.png`;
const formData = new FormData();
formData.append('file', file, remoteFilename);
formData.append('uploaded_to', pageId);
const resp = await window.$http.post(window.baseUrl('/images/gallery'), formData);
return resp.data;
}
/**
* Handle pasting images from clipboard.
* @param {Editor} editor
* @param {WysiwygConfigOptions} options
* @param {ClipboardEvent|DragEvent} event
*/
function paste(editor, options, event) {View on GitHub (pinned to 18f8469a1c)
Solutions
- Check file.type starts with 'image' before calling uploadImageFile
- Notify the user that only image files can be pasted/dropped as images
- Handle empty browser file.type with an extension-based fallback check
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at resources/js/wysiwyg-tinymce/drop-paste-handling.js:17 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BookStackApp/BookStack@18f8469a1c (2026-09-02).
Data as JSON: /api/errors/3d51e4c0c45bb971.
Report an issue: GitHub.