You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.3 KiB
62 lines
1.3 KiB
<?php |
|
/** |
|
* Nextcloud - Gallery |
|
* |
|
* This file is licensed under the Affero General Public License version 3 or |
|
* later. See the COPYING file. |
|
* |
|
* @author Olivier Paroz <galleryapps@oparoz.com> |
|
* |
|
* @copyright Olivier Paroz 2017 |
|
*/ |
|
|
|
namespace OCA\Gallery\Http; |
|
|
|
use OCP\AppFramework\Http\Response; |
|
use OCP\AppFramework\Http; |
|
|
|
/** |
|
* A renderer for images |
|
* |
|
* @package OCA\Gallery\Http |
|
*/ |
|
class ImageResponse extends Response { |
|
|
|
/** |
|
* @var \OC_Image|string |
|
*/ |
|
private $preview; |
|
|
|
/** |
|
* Constructor |
|
* |
|
* @param array $image image meta data |
|
* @param int $statusCode the HTTP status code, defaults to 200 |
|
*/ |
|
public function __construct(array $image, $statusCode = Http::STATUS_OK) { |
|
$name = $image['name']; |
|
$this->preview = $image['preview']; |
|
|
|
$this->setStatus($statusCode); |
|
$this->addHeader('Content-type', $image['mimetype'] . '; charset=utf-8'); |
|
$this->addHeader('Content-Disposition', |
|
'attachment; filename*=UTF-8\'\'' . rawurlencode($name) . '; filename="' |
|
. rawurlencode($name) . '"' |
|
); |
|
} |
|
|
|
/** |
|
* Returns the rendered image |
|
* |
|
* @return string the file |
|
*/ |
|
public function render() { |
|
if ($this->preview instanceof \OC_Image) { |
|
// Uses imagepng() to output the image |
|
return $this->preview->data(); |
|
} else { |
|
return $this->preview; |
|
} |
|
} |
|
|
|
}
|
|
|