38 lines
899 B
PHP
38 lines
899 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);
|
|
}
|
|
}
|
|
}
|