Действие после скачивания файла

336
10 декабря 2016, 10:19

Создал скрипт скачивания файла, который перенаправляет пользователя на страницу обработки файла и сразу после скачивает его выводя диалоговое окно.

Вопрос в том как определить что загрузка файла началась или диалоговое окно закрыто или что-либо что бы запустить переход на главную страницу?

Так я запускаю загрузку файла:

<script>location.replace("/download.php?file='.$name.'");</script>

А в download.php все по стандартному взятое отсюда.

Answer 1

Можно открыть загрузку файла в отдельном окне/вкладке, и проверять когда оно будет закрыто.

Пример:

<script type='text/javascript'>
    function openTab(url, callback){
        var popup = window.open(url, "_blank");
        if(typeof callback == 'function'){
            var interval = window.setInterval(function() {
                try {
                    if (popup == null || popup.closed) {
                        window.clearInterval(interval);
                        callback();
                    }
                }
                catch (e) {
                }
            }, 500);
        }
        popup.focus();
    }
    //JS
    document.getElementById('link-download').onclick = function (event){
        openTab(event.target.href, function(){
            /* Действия после старта скачивания */
            window.location.reload();
        });
        return false;
    } 
    //jQuery
    $(document).on('click', '.download-file', function(e){
        e.preventDefault();
        openTab(event.target.href, function(){
            /* Действия после старта скачивания */
            window.location.reload();
        });
    });
</script>
<a href="/download.php?file='<?php echo $name;?>'" id="link-download" class="download-file">Скачать</a>

Если в файле download.php возникли проблемы, или файл не найден, и вы хотите закрыть новое окно/вкладку, то можно просто вывести:

echo "<script type='text/javascript' charset='utf-8'>if(window.opener){window.close();}</script>";

P.S. Используйте один из вариантов или с jQuery framework или на чистом js, оба не оставляйте.

P.S.S. Пример, для примера, копирование-вставка может не сработать.

P.S.S.S. Метод отслеживания закрытие окна может и не сработать.

READ ALSO
Парсинг результатов выдачи Google. Проблема с распознаванием капчи

Парсинг результатов выдачи Google. Проблема с распознаванием капчи

Пишу парсер выдачи результатов поиска гуглаВроде бы несложно

527
классы навигационного меню wordpress

классы навигационного меню wordpress

Фнкция wp_nav_menu() генерирует следующую структуру:

228
Удачная отправка письма

Удачная отправка письма

Не могу понять , как сделать так , чтобы при удачной проверки формы ( required ) показывался alert с сообщением о том , что письмо удачно отправилось

205
Как в Joomla проверить что пользователь состоит только в указанной группе?

Как в Joomla проверить что пользователь состоит только в указанной группе?

Хочу для Всех пользователей, которые в группе "регистр", показать сообщение, а для тех, кто в других группах, не показыватьКак сделать такую...

306