【发布时间】:2018-08-28 11:35:35
【问题描述】:
我在我的实体类中使用 imagejpeg() 函数创建了一个图像
$imageSize = $this->_getDefaultImageSize();
$image = imagecreate($imageSize['width'], $imageSize['height']);
imagecolorallocate($image, 54, 175, 105);
header('Content-type: image/jpeg');
imagejpeg($image, $path, null);
imagedestroy($image);
在此之后,我立即将 file_get_contents($path) 返回到我的 REST API 控制器,该控制器根据数据库中保存的图像扩展名与相应的标头(例如 'Content-type: image/jpeg' )相呼应.
如果我发送生成的文件,它会给我一个 204 标头,没有内容。如果我进入并重命名文件并添加一个从谷歌下载的与以前同名的新图像文件,它将发送带有代码 200 的图像。删除谷歌图像,将生成的文件重命名为正常并尝试获取它再次,它再次返回 204。
一开始我以为是Linux的权限错误,我给生成的图片664权限,和google图片一样,还是不行。
我还必须补充一点,图像正在正确生成,可以通过服务器上的公共目录和任何图像查看应用程序查看。
关于为什么 imagejpeg() 生成的图像不会使用 PHP 7.2 在 Symfony 3.2 上发送的任何想法?
【问题讨论】:
-
要从你的 symfony 应用程序中提供文件,我建议你看看
vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/ControllerTrait.php中的file函数。您的控制器应该可以使用此功能 -
谢谢,这解决了我的问题。
-
我可以将其发布为答案吗?
-
是的,当然:)
标签: symfony symfony-3.2 php-7.2 symfony3.x