diff options
author | Pierre Schmitz <pierre@archlinux.de> | 2013-09-23 07:47:40 +0200 |
---|---|---|
committer | Florian Pritz <bluewind@xinu.at> | 2013-09-23 18:07:47 +0200 |
commit | 635b0717931df907ee8015a42ad0ed1fcdf967c4 (patch) | |
tree | d301376b6dfc5326a7c2190c99194475ff7bc016 /application/libraries/Ddownload/drivers/Ddownload_nginx.php | |
parent | 551c359d8e50608093ba0f7179bd311d89e90da2 (diff) |
Implement rangeDownload() as driver and provide sendfile implementations for Nginx and Lighttpd
* The rangeDownload() function has been moved to libraries/Ddownload/drivers/Ddownload_php.php
* The nginx and lighttpd drivers can be set via $config['download_driver']
Signed-off-by: Pierre Schmitz <pierre@archlinux.de>
Diffstat (limited to 'application/libraries/Ddownload/drivers/Ddownload_nginx.php')
-rw-r--r-- | application/libraries/Ddownload/drivers/Ddownload_nginx.php | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/application/libraries/Ddownload/drivers/Ddownload_nginx.php b/application/libraries/Ddownload/drivers/Ddownload_nginx.php new file mode 100644 index 000000000..5fb6ffa87 --- /dev/null +++ b/application/libraries/Ddownload/drivers/Ddownload_nginx.php @@ -0,0 +1,30 @@ +<?php +/* + * Copyright 2013 Pierre Schmitz <pierre@archlinux.de> + * + * Licensed under AGPLv3 + * (see COPYING for full license text) + * + */ + +class Ddownload_nginx extends Ddownload_Driver { + + public function serveFile($file, $filename, $type) + { + $CI =& get_instance(); + $upload_path = $CI->config->item('upload_path'); + $download_location = $CI->config->item('download_nginx_location'); + + if (strpos($file, $upload_path) === 0) { + $file_path = substr($file, strlen($upload_path)); + } else { + show_error('Invalid file path'); + return; + } + + header('Content-disposition: inline; filename="'.$filename."\"\n"); + header('Content-Type: '.$type."\n"); + header('X-Accel-Redirect: '.$download_location.$file_path."\n"); + } + +} |