diff --git a/public/script.js b/public/script.js index 0302ed7f4..329948e85 100644 --- a/public/script.js +++ b/public/script.js @@ -6838,6 +6838,11 @@ function importCharacter(file) { contentType: false, processData: false, success: async function (data) { + if (data.error) { + toastr.error('The file is likely invalid or corrupted.', 'Could not import character'); + return; + } + if (data.file_name !== undefined) { $('#character_search_bar').val('').trigger('input'); $("#rm_info_block").transition({ opacity: 0, duration: 0 }); diff --git a/src/character-card-parser.js b/src/character-card-parser.js index e97a66bf0..6f2e73479 100644 --- a/src/character-card-parser.js +++ b/src/character-card-parser.js @@ -61,6 +61,11 @@ const parse = async (cardUrl, format) => { return PNGtext.decode(chunk.data); }); + if (textChunks.length === 0) { + console.error('PNG metadata does not contain any character data.'); + throw new Error('No PNG metadata.'); + } + return Buffer.from(textChunks[0].text, 'base64').toString('utf8'); default: break;