compress: раздельная диагностика отсева (формат vs размер)
This commit is contained in:
parent
4259c3daf7
commit
d997bad179
@ -309,18 +309,29 @@ let isAdmin = false;
|
|||||||
}
|
}
|
||||||
}).catch(function(){}); })();
|
}).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) {
|
function handleFiles(files) {
|
||||||
const arr = Array.from(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 valid = [], badFormat = [], tooBig = [];
|
||||||
const invalid = arr.length - valid.length;
|
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) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
if (invalid > 0) {
|
|
||||||
showError(invalid + ' файл(ов) пропущено (неверный формат или размер > 20 МБ)');
|
|
||||||
}
|
|
||||||
|
|
||||||
valid.forEach(f => addFileEntry(f));
|
valid.forEach(f => addFileEntry(f));
|
||||||
drainQueue();
|
drainQueue();
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user