mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
[ticket/15276] Use streams
PHPBB3-15276
This commit is contained in:
parent
946f0348a2
commit
9e018e7c12
4 changed files with 35 additions and 9 deletions
|
@ -47,8 +47,17 @@ function send_avatar_to_browser($file, $browser)
|
||||||
|
|
||||||
if ($storage->exists($file_path) && !headers_sent())
|
if ($storage->exists($file_path) && !headers_sent())
|
||||||
{
|
{
|
||||||
|
$file_info = $storage->file_info($file_path);
|
||||||
|
|
||||||
header('Cache-Control: public');
|
header('Cache-Control: public');
|
||||||
|
|
||||||
|
try {
|
||||||
|
header('Content-Type: ' . $file_info->mimetype);
|
||||||
|
} catch (\phpbb\storage\exception\not_implemented $e) {
|
||||||
|
// Just dont send this header
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if ((strpos(strtolower($browser), 'msie') !== false) && !phpbb_is_greater_ie_version($browser, 7))
|
if ((strpos(strtolower($browser), 'msie') !== false) && !phpbb_is_greater_ie_version($browser, 7))
|
||||||
{
|
{
|
||||||
header('Content-Disposition: attachment; ' . header_filename($file));
|
header('Content-Disposition: attachment; ' . header_filename($file));
|
||||||
|
@ -68,6 +77,12 @@ function send_avatar_to_browser($file, $browser)
|
||||||
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 31536000) . ' GMT');
|
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 31536000) . ' GMT');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
header('Content-Type: ' . $file_info->size);
|
||||||
|
} catch (\phpbb\storage\exception\not_implemented $e) {
|
||||||
|
// Just dont send this header
|
||||||
|
}
|
||||||
|
|
||||||
if (@readfile($file_path) == false)
|
if (@readfile($file_path) == false)
|
||||||
{
|
{
|
||||||
$fp = @fopen($file_path, 'rb');
|
$fp = @fopen($file_path, 'rb');
|
||||||
|
@ -82,7 +97,18 @@ function send_avatar_to_browser($file, $browser)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
echo $storage->get_contents($file_path);
|
try {
|
||||||
|
$fp = $storage->read_stream($file_path);
|
||||||
|
|
||||||
|
while (!feof($fp))
|
||||||
|
{
|
||||||
|
echo fread($fp, 8192);
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose($fp);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
flush();
|
flush();
|
||||||
}
|
}
|
||||||
|
|
|
@ -236,17 +236,17 @@ class local implements adapter_interface, stream_interface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get_file_info($path)
|
public function file_properties($path)
|
||||||
{
|
{
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get_size($path)
|
public function file_size($path)
|
||||||
{
|
{
|
||||||
return filesize($this->root_path . $path);
|
return filesize($this->root_path . $path);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get_mimetype($path)
|
public function file_mimetype($path)
|
||||||
{
|
{
|
||||||
return mime_content_type($this->root_path . $path);
|
return mime_content_type($this->root_path . $path);
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ class file_info
|
||||||
{
|
{
|
||||||
$this->properties = [];
|
$this->properties = [];
|
||||||
|
|
||||||
foreach($this->adapter->get_file_info($this->path) as $name => $value) {
|
foreach($this->adapter->file_properties($this->path) as $name => $value) {
|
||||||
$this->properties[$name] = $value;
|
$this->properties[$name] = $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,12 +47,12 @@ class file_info
|
||||||
|
|
||||||
if (!isset($this->properties[$name]))
|
if (!isset($this->properties[$name]))
|
||||||
{
|
{
|
||||||
if (!method_exists($this->adapter, 'get_' . $name))
|
if (!method_exists($this->adapter, 'file_' . $name))
|
||||||
{
|
{
|
||||||
throw new not_implemented();
|
throw new not_implemented();
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->properties[$name] = call_user_func($this->adapter, 'get_' . $name);
|
$this->properties[$name] = call_user_func($this->adapter, 'file_' . $name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->properties[$name];
|
return $this->properties[$name];
|
||||||
|
|
|
@ -193,8 +193,8 @@ class storage
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function get_fileinfo($path)
|
public function file_info($path)
|
||||||
{
|
{
|
||||||
return new file_info($adapter, $path);
|
return new file_info($this->adapter, $path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue