diff --git a/public/compress.html b/public/compress.html
index 7ec1616..3c58759 100644
--- a/public/compress.html
+++ b/public/compress.html
@@ -309,18 +309,29 @@ let isAdmin = false;
}
}).catch(function(){}); })();
+function isValidFormat(f) {
+ return VALID_TYPES.includes(f.type) || /\.(jpe?g|png|webp|avif|tiff?|gif|bmp|svg|heic|heif)$/i.test(f.name);
+}
+
function handleFiles(files) {
const arr = Array.from(files);
- const valid = arr.filter(f => (VALID_TYPES.includes(f.type) || /\.(jpe?g|png|webp|avif|tiff?|gif|bmp|svg|heic|heif)$/i.test(f.name)) && f.size <= MAX_SIZE);
- const invalid = arr.length - valid.length;
+ const valid = [], badFormat = [], tooBig = [];
+ arr.forEach(f => {
+ if (!isValidFormat(f)) badFormat.push(f);
+ else if (f.size > MAX_SIZE) tooBig.push(f);
+ else valid.push(f);
+ });
+
+ // Раздельная диагностика: точно видно, что именно отсеяно
+ const parts = [];
+ if (badFormat.length) parts.push(badFormat.length + ' — неподдерживаемый формат');
+ if (tooBig.length) parts.push(tooBig.length + ' — больше ' + (MAX_SIZE / 1024 / 1024).toFixed(0) + ' МБ');
+ if (parts.length) showError('Пропущено: ' + parts.join(', '));
if (!valid.length) {
- showError('Нет подходящих файлов. Допустимы JPEG, PNG, WebP, AVIF, TIFF, GIF, BMP, HEIC до 20 МБ.');
+ if (!parts.length) showError('Нет файлов. Допустимы JPEG, PNG, WebP, AVIF, TIFF, GIF, BMP, SVG, HEIC.');
return;
}
- if (invalid > 0) {
- showError(invalid + ' файл(ов) пропущено (неверный формат или размер > 20 МБ)');
- }
valid.forEach(f => addFileEntry(f));
drainQueue();