Send gallery album thumbnail with OC_Response::sendFile

remotes/origin/stable4
Bart Visscher 14 years ago
parent 594dcf13f2
commit 29fc82c364
  1. 6
      apps/gallery/ajax/galleryOp.php
  2. 5
      lib/image.php
  3. 21
      lib/response.php

@ -41,9 +41,9 @@ function handleRemove($name) {
function handleGetThumbnails($albumname) {
OC_Response::enableCaching(3600 * 24); // 24 hour
$photo = new OC_Image();
$photo->loadFromFile(OC::$CONFIG_DATADIRECTORY.'/../gallery/'.$albumname.'.png');
$photo->show();
$thumbnail = OC::$CONFIG_DATADIRECTORY.'/../gallery/'.$albumname.'.png';
header('Content-Type: '.OC_Image::getMimeTypeForFile($thumbnail));
OC_Response::sendFile($thumbnail);
}
function handleGalleryScanning() {

@ -48,6 +48,11 @@ class OC_Image {
protected $imagetype = IMAGETYPE_PNG; // Default to png if file type isn't evident.
protected $filepath = null;
static public function getMimeTypeForFile($filepath) {
$imagetype = exif_imagetype($filepath);
return $imagetype ? image_type_to_mime_type($imagetype) : '';
}
/**
* @brief Constructor.
* @param $imageref The path to a local file, a base64 encoded string or a resource created by an imagecreate* function.

@ -10,6 +10,7 @@ class OC_Response {
const STATUS_FOUND = 304;
const STATUS_NOT_MODIFIED = 304;
const STATUS_TEMPORARY_REDIRECT = 307;
const STATUS_NOT_FOUND = 404;
static public function enableCaching($cache_time = null) {
if (is_numeric($cache_time)) {
@ -47,6 +48,9 @@ class OC_Response {
case self::STATUS_FOUND;
$status = $status . ' Found';
break;
case self::STATUS_NOT_FOUND;
$status = $status . ' Not Found';
break;
}
header($protocol.' '.$status);
}
@ -85,6 +89,9 @@ class OC_Response {
if (empty($lastModified)) {
return;
}
if (is_int($lastModified)) {
$lastModified = gmdate(DateTime::RFC2822, $lastModified);
}
if ($lastModified instanceof DateTime) {
$lastModified = $lastModified->format(DateTime::RFC2822);
}
@ -95,4 +102,18 @@ class OC_Response {
}
header('Last-Modified: '.$lastModified);
}
static public function sendFile($filepath=null) {
$fp = fopen($filepath, 'rb');
if ($fp) {
self::setLastModifiedHeader(filemtime($filepath));
self::setETagHeader(md5_file($filepath));
header('Content-Length: '.filesize($filepath));
fpassthru($fp);
}
else {
self::setStatus(self::STATUS_NOT_FOUND);
}
}
}

Loading…
Cancel
Save