【问题标题】:CakePHP - How do you tell a controller's action to output a raw image header?CakePHP - 你如何告诉控制器的动作来输出原始图像标题?
【发布时间】:2011-10-02 09:42:02
【问题描述】:

我正在使用 CakePHP 框架重新编码一个现有项目。现在,在我现有的代码中,我有一个 PHP 文件(称为 thumb.php),它接受一个文件和大小,并为浏览器生成一个调整大小的原始图像。然后可以将其用于例如图像标签或用于其他目的。这个“thumbs.php”文件只使用了一个 header('Content-Type: image/jpeg');输出原始图像。

无论如何,它在行动: http://www.dosspirit.net/php/thumb.php?file=268-transport-tycoon-deluxe-3.png&size=640

(您可以将 size 参数更改为 240 甚至 1240,图像将为您调整大小)。

现在,我想在 cakephp 中复制这种行为。

到目前为止,我有这样的设置:

class ScreenshotController extends AppController {
    public function view() {
        (Some code to handle image scaling)
    }
}

看上面的代码,截图的url是这样的:http://www.domain/screenshot/view/268-transport-tycoon-deluxe-3.png/640

现在,我如何告诉 cakePHP 中的控制器输出图像标题而不是通过视图等,从而模仿 thumbs.php 文件中的功能?

感谢任何回应,

真诚地, - 巴克伦

【问题讨论】:

    标签: php cakephp image-processing controller


    【解决方案1】:

    CakePHP 中还有 PHP。你可以在你的行动中做同样的事情:

    public function view() {
        header('…');
        echo $imageData;
        exit();
    }
    

    话虽如此,您应该使用Controller::header 方法输出原始标头(用于可覆盖的单元测试)。更好的是,您应该使用 Media Views 以蛋糕方式输出图像(不过这需要您写入文件)。

    【讨论】:

    • 您好,感谢您的回复。是的,仍然有“普通 php”,但我想要“蛋糕方式”。写入文件是“好的”,我想如果你想要缓存,但是只输出图像数据呢?
    • @bakkelun 正如我所写,您可以简单地echo 图像数据(或调用imagejpeg 或任何您想做的事情),然后exit()。它会像任何其他 PHP 脚本一样输出。
    猜你喜欢
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 2023-01-18
    相关资源
    最近更新 更多