From 948fcd838d9430fd25da70bb8c3d1b0bf5357e6a Mon Sep 17 00:00:00 2001 From: Olivier Gayot Date: Mon, 12 Jan 2015 21:08:22 +0100 Subject: first version Signed-off-by: Olivier Gayot --- php_download.php | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 php_download.php diff --git a/php_download.php b/php_download.php new file mode 100644 index 0000000..dc46b33 --- /dev/null +++ b/php_download.php @@ -0,0 +1,69 @@ +base_dw . '/' . $path; + } + + private function __incr_count($filename) { + /* open the file */ + $fh = fopen($this->base_count . '/' . $filename . '.cnt', "r+"); + + if (is_resource($fh) and flock($fh, LOCK_EX)) { + $count = fgets($fh); + + if ($count === false) + $count = 0; + + ftruncate($fh, 1); + rewind($fh); + fwrite($fh, $count + 1); + + flock($fh, LOCK_UN); + + fclose($fh); + } + } + + public function download($filename) { + $path = $this->__get_full_path($filename) or die('invalid file'); + + if (@readfile($path) !== false) { + header('Content-Description: File Transfer'); + header('Content-Disposition: attachment; filename=' . $filename); + header('Content-Length: '. filesize($path)); + header('Cache-Control: must-revalidate'); + + $this->__incr_count($filename); + } + + } + + public function get_count($path) { + if (!$this->__is_valid_path($path)) return 0; + + $fh = @fopen($this->base . $path, "r"); + + if (!is_resource($fh)) + return 0; + + $count = fgets($fh) or '0'; + + fclose($fh); + + return $count; + } +} + +$var = new PHP_DW(); + +$var->download($_GET['file']); + +?> -- cgit v1.2.3