Лучший способ прозрачного журнала загрузок? - PullRequest
3 голосов
/ 30 января 2009

У меня есть личный проект, который уже некоторое время онлайн. Я вел подсчет загрузок, выполняя это:

  • Когда пользователь щелкает ссылку на скачивание, он запускает скрипт PHP, который записывает некоторую информацию в таблицу.
  • После записи данных скрипт возвращает путь к фактическому файлу.
  • У пользователя появляется возможность сохранить файл на жестком диске, как если бы это была какая-либо другая загрузка.

Это сработало достаточно хорошо на некоторое время; однако, он не дает пользователям возможности right-click > save target as..., потому что они просто увидят, что download.php появится в диалоговом окне «Сохранить файл ...». Таким образом, единственный способ загрузить проект - щелкнуть левой кнопкой мыши по ссылке.

Я бы хотел улучшить этот процесс, чтобы пользователь мог загрузить проект любым удобным для него способом. Итак, что может быть лучше для прозрачной регистрации загрузок, не мешая пользователю?

Для чего стоит , машина является стандартным стеком LAMP, поэтому здесь нет опций .NET.

Ответы [ 4 ]

3 голосов
/ 30 января 2009

Это взято из php-документации , но также возможно с использованием разных языков сценариев:

<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?>

HTTP-заголовок Content-Disposition сообщает, чтобы сохранить его как загрузку.

Другой вариант - регулярно проверять ваши лог-файлы, как каждый день, используя скрипт.

1 голос
/ 30 января 2009

Настроить Google Analytics? :)

1 голос
/ 30 января 2009

Этот ответ подробно описывает, как использовать страницу переноса для регистрации загрузки, а также начать загрузку файла, как только кто-то щелкнет ссылку. Я недавно проверил это для щелчка правой кнопкой мыши.

Я использую php-посредника для регистрации загрузок файлов. URL в формате http://192.168.1.1/xfer.php?file=Li9zb25ncy9HTE9XX0xlYXZlIFlvdXIgSGF0IE9uLm1wMw приводит к имени файла для файла Сохранить как ... и щелкает левой кнопкой мыши в Firefox.

Вот мой xfer.php

<?
$filename = base64_url_decode($_GET['file']);
if ($_GET['file']){
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header('Content-disposition: attachment; filename='.str_replace(" ", "_",basename($filename)));
    header("Content-Transfer-Encoding: binary");
    header('Content-Length: '. filesize($filename));
    readfile($filename);
}
$fh = fopen("test.html","a");
fwrite($fh,basename($filename)."\n<br />");
fclose($fh);
function base64_url_decode($input) {
    return base64_decode(strtr($input, '-_,', '+/='));
}
?>

А страница, которая ссылается на xfer.php:

$link = "xfer.php?file=".base64_url_encode("./songs/$key");

с $key - именем файла, а songs - папкой, в которой хранятся имена файлов.

1 голос
/ 30 января 2009

По этой причине многие сайты используют ссылку для загрузки, которая приведет вас на другую страницу, которая автоматически начнет загрузку при загрузке страницы, а также предоставит пользователю ссылку для прямой загрузки. В основном это способ просмотра страниц для показов рекламы, но он также помогает легче отслеживать, кто загружает их файлы.

...