46 lines
931 B
PHP
46 lines
931 B
PHP
|
<?php
|
||
|
|
||
|
namespace Vn\Web;
|
||
|
|
||
|
class Util
|
||
|
{
|
||
|
/**
|
||
|
* Reads a file and writes it to the output buffer.
|
||
|
*
|
||
|
* @param string file The file path
|
||
|
* @param boolean useXsendfile Wether to use the apache module Xsendfile
|
||
|
**/
|
||
|
static function printFile ($file, $useXsendfile = FALSE)
|
||
|
{
|
||
|
if (!file_exists ($file))
|
||
|
{
|
||
|
http_response_code (404);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$finfo = new \finfo (FILEINFO_MIME_TYPE);
|
||
|
$mimeType = $finfo->file ($file);
|
||
|
|
||
|
if ($useXsendfile)
|
||
|
{
|
||
|
header ("X-Sendfile: $file");
|
||
|
header ("Content-Type: $mimeType");
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
header ('Content-Description: File Transfer');
|
||
|
header ("Content-Type: $mimeType");
|
||
|
header ('Content-Disposition: attachment; filename="'. basename ($file) .'"');
|
||
|
header ('Expires: 0');
|
||
|
header ('Cache-Control: must-revalidate');
|
||
|
header ('Pragma: public');
|
||
|
header ('Content-Length: '. filesize ($file));
|
||
|
|
||
|
set_time_limit (0);
|
||
|
readfile ($file);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
?>
|