Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.03.2020, 19:53
Новичок на форуме
Отправить личное сообщение для KOKS1999 Посмотреть профиль Найти все сообщения от KOKS1999
 
Регистрация: 29.01.2020
Сообщений: 3

FileReader если выбрать другой файл
Как сделать так, если я передумал и выбрал другой файл вместо своего первого выбора, Filereader обновился. Потому что он запоминает первый выбор...

function check_ProductPoster() {
 
 
        let FilePoster = document.getElementById("product_poster").files[0],
            ext = "не определилось";
 
        if (FilePoster === undefined) {
            alert("undi");
            $("#poster_error_message").html("Вы не выбрали файл");
            $("#poster_error_message").show();
            errorPosterFile = true;
        } else {
            if (FilePoster.size <= 0) {
                alert("в");
                $("#poster_error_message").html("Вы не выбрали файл");
                $("#poster_error_message").show();
                errorPosterFile = true;
            } else {
                let parts = FilePoster.name.split('.');
                if (parts.length > 1) ext = parts.pop();
                if ((FilePoster.type === 'image/jpg' || FilePoster.type === 'image/png' || FilePoster.type === 'image/gif'
                    || FilePoster.type === 'image/jpeg') === false) {
                    $("#poster_error_message").html("Разрешено: png, gif, jpg, jpeg");
                    $("#poster_error_message").show();
                    errorPosterFile = true;
                } else {
                    if ((ext === 'jpg' || ext === 'png' || ext === 'gif' || ext === 'jpeg') === false) {
                        $("#poster_error_message").html("Разрешено: png, gif, jpg, jpeg");
                        $("#poster_error_message").show();
                        errorPosterFile = true;
                    } else {
 
                        const reader = new FileReader();
 
                        reader.readAsDataURL(FilePoster);
                        reader.onload = function (e) {
                            const image = new Image();
                            image.src = e.target.result;
 
                            image.onload = function () {
                                let height = this.height;
                                let width = this.width;
 
                                if (height == 328 && width == 246) {
                                    $("#name_product_error_message").hide();
                                } else {
                                    $("#poster_error_message").html("Ширина:246, Высота:328");
                                    $("#poster_error_message").show();
                                    errorPosterFile = true;
                                }
 
 
                            }
                        }
 
                    }
                }
            }
        }
 
    }
Ответить с цитированием
  #2 (permalink)  
Старый 06.03.2020, 21:27
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Если Вы каждый раз при выборе нового файла будете вызывать check_ProductPoster, он и будет обновляться.
Там же
const reader = new FileReader()

ЗЫ
reader.onload = function (e) {
const image = new Image();
image.src = e.target.result;

Там не должно быть e.target. Это не элемент DOM.
Просто image.src = reader.result;

Последний раз редактировалось voraa, 06.03.2020 в 21:35.
Ответить с цитированием
  #3 (permalink)  
Старый 06.03.2020, 21:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А зачем проверять mime типы, а затем еще и по расширению, от недоверия? Вообще-то расширение можно прилепить какое угодно к какому угодно файлу, проверять по расширению, это моветон.

Вообще FileReader ничего не запоминает, выбрали новый, значит перерисуйте картинку или в чем проблема?
Ответить с цитированием
  #4 (permalink)  
Старый 07.03.2020, 07:21
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от voraa
Там не должно быть e.target.
В спецификации EXAMPLE 1 написано evt.target.result.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить элементу аттрибут, если другой элемент содержит текст Yan.Total jQuery 7 07.10.2013 15:17
Помогите советом новичку ,плз. vovka_3000 jQuery 8 15.04.2012 10:16
Как корректно подгрузить резервный файл JS, если с основным проблема? Simba Общие вопросы Javascript 3 28.01.2012 19:20
Как сделать: если один инпут заполнен, то в другой вводить нельзя? Fenec Events/DOM/Window 4 12.11.2010 19:32
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31