How can I check if static file exists or not from url_for() in Flask?

Issue

Is there is way I can check the static file from url_for() is really exist or not? Because I would like to check that if the first file does not exists, I would like to replace it with another file just like this in my html file:

{% set IconPng = url_for('static', filename="images/favo.png") %}
{% set IconIco = url_for('static', filename="images/favo.ico") %}
{% set Default = url_for('static', filename="images/default.ico") %}

{% if IconPng %}
    <img src="{{IconPng}}" />
{% elif IconIco %}
    <img src="{{IconIco}}" />
{% else %}
    <img src="{{Default}}" />
{% endif %}

I have tried with above and also with or operator like:

<img src="{{IconPng or IconIco or Default}}" />

However, it does not work. Any tip how can I do this check for url_for() in Flask?

Thanks

Solution

In my opinion it is rather task for javascript than your backend.
You can check if image exist using function like this one, and then change image src accordingly:

function file_exists(url){
    var http = new XMLHttpRequest();

    http.open('HEAD', url, false);
    http.send();

    return http.status != 404;
}

Answered By – Adrian StÄ™pniak

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published