Проверка, что файл является изображением в JavaScript
В JavaScript нет встроенного способа проверить, является ли файл изображением, без загрузки и анализа его содержимого. Однако, вы можете использовать несколько подходов для проверки, является ли файл изображением:
Проверка расширения файла: - Проверьте расширение файла (например, .jpg, .png, .gif). Это самый простой метод, но он не всегда надежен, так как расширение может быть изменено.
Использование FileReader и Image*: - Загрузите файл с помощью *FileReader и попытайтесь создать объект Image. Если файл является изображением, объект Image будет успешно создан и загружен.
Вот пример кода, который использует второй подход:
function isImage(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = function(event) {
const img = new Image();
img.onload = function() {
resolve(true);
};
img.onerror = function() {
resolve(false);
};
img.src = event.target.result;
};
reader.onerror = function() {
resolve(false);
};
reader.readAsDataURL(file);
});
}
// Пример использования
const input = document.querySelector('input[type="file"]');
input.addEventListener('change', async (event) => {
const file = event.target.files[0];
const result = await isImage(file);
if (result) {
console.log('Файл является изображением');
} else {
console.log('Файл не является изображением');
}
});
В этом примере: 1. Создается FileReader, который читает файл как Data URL. 2. Создается объект Image, и его свойство src устанавливается на Data URL. 3. Если изображение успешно загружается (событие onload), файл считается изображением. 4. Если происходит ошибка (событие onerror), файл считается не изображением.
Этот метод более надежен, чем проверка расширения файла, так как он фактически пытается загрузить файл как изображение.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.