Пример #1
0
}
session_write_close();
$ownerView = new \OC\Files\View('/' . $user . '/files');
$mime = $ownerView->getMimeType($img);
list($mimePart, ) = explode('/', $mime);
if ($mimePart === 'image') {
    $fileInfo = $ownerView->getFileInfo($img);
    if ($fileInfo['encrypted'] === true) {
        $local = $ownerView->toTmpFile($img);
    } else {
        $local = $ownerView->getLocalFile($img);
    }
    $rotate = false;
    if (is_callable('exif_read_data')) {
        //don't use OCP\Image here, using OCP\Image will always cause parsing the image file
        $exif = @exif_read_data($local, 'IFD0');
        if (isset($exif['Orientation'])) {
            $rotate = $exif['Orientation'] > 1;
        }
    }
    OCP\Response::setContentDispositionHeader(basename($img), 'attachment');
    if ($rotate) {
        $image = new OCP\Image($local);
        $image->fixOrientation();
        $image->show();
    } else {
        //use the original file if we dont need to rotate, saves having to re-encode the image
        header('Content-Type: ' . $mime);
        $ownerView->readfile($img);
    }
}