Как сделать страницу загрузки - PullRequest
2 голосов
/ 25 апреля 2011

Я в восторге от того, как сделать страницу загрузки похожей на premiumpixels.com

Пример - http://www.premiumpixels.com/freebies/custom-audio-player-skin-psd/

Если мы нажмем «скачать»:

1) страница перезагружается в URL как premiumpixels.com/download/?file=audio-player

2) через некоторое время начинается загрузка.

3) загрузка файлов из cdn.premiumpixels.com/uploads/audio-player.zip

Как мне сделать то же самое? Как это делается на php?

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

Спасибо.

Ответы [ 4 ]

2 голосов
/ 25 апреля 2011

1.) Пользователь нажимает на ссылку - например, download.php?id=my-app-id;

2.) В файле download.php вы делаете свои необычные обновления для mysql

3.) Затем вы перенаправляете к актуальному загружаемому файлу: header("Location: /folder/for/downloadcontent/download.zip");

Для SEO Friendly URL используйте RewriteRule в .htaccess файле

2 голосов
/ 25 апреля 2011

Используйте функцию Javascript setTimeout, а затем перенаправьте браузер на ресурс загрузки.

Похоже, что этот источник использует сайт:

jQuery(function () {

    // get the GET variables
    var theme = getUrlVars();

    var downloadLink = 'http://cdn.premiumpixels.com/uploads/' + theme['file'] + '.zip';

    if(theme['file'])
    {
         jQuery('#downloadLink').attr('href', downloadLink);

         delayedDownload();
    }

    function delayedDownload()
    {
         timeoutID = window.setTimeout(downloadTheme, 1000);
    }

    function downloadTheme()
    {
        window.location.replace(downloadLink);
        //window.open(downloadLink,'','menubar=1,location=1,toolbar=1,width=600,height=500');
    }

    // Read a page's GET URL variables and return them as an associative array.
    function getUrlVars()
    {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

        for(var i = 0; i < hashes.length; i++)
        {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }

        return vars;
    }

});
0 голосов
/ 16 января 2012

Или даже простое обновление метатега в заголовке страницы:

<meta http-equiv="refresh" content="5; url=http://example.com/myfile">
0 голосов
/ 01 августа 2011

Или вы можете использовать ответ типа MIME / Multipart, где вы отправляете HTML-страницу в первой части, а файл - в другой части, тогда вам вообще не нужно использовать javascript:)

...