compress: раздельная диагностика отсева (формат vs размер)

This commit is contained in:
treamz 2026-07-24 17:05:57 +03:00
parent 4259c3daf7
commit d997bad179

View File

@ -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();