Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   FileReader если выбрать другой файл (https://javascript.ru/forum/misc/79674-filereader-esli-vybrat-drugojj-fajjl.html)

KOKS1999 06.03.2020 19:53

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;
                                }
 
 
                            }
                        }
 
                    }
                }
            }
        }
 
    }

voraa 06.03.2020 21:27

Если Вы каждый раз при выборе нового файла будете вызывать 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;

laimas 06.03.2020 21:27

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

Вообще FileReader ничего не запоминает, выбрали новый, значит перерисуйте картинку или в чем проблема?


Часовой пояс GMT +3, время: 23:33.