gpt4 book ai didi

php - 如何在元素 View 中显示个人资料图片

转载 作者:太空宇宙 更新时间:2023-11-04 08:06:34 25 4
gpt4 key购买 nike

<?php
public function beforeFilter(\Cake\Event\Event $event)
{

$user = $this->request->session()->read('Auth.User');
$this->set('username', $user['username']);

$this->set('profile', $user['profile_pic'])
}
?>

在上面的代码中,我可以打印 Element/folder/nav.ctp 中的username

<?php 
echo $this->Html->image('users/' .stream_get_contents($profile),array('width'=>'100px','height'=>'100px'));
?>

当我打印图像时,警告信息如下。

Warning (2): stream_get_contents() expects parameter 1 to be resource, integer given [APP/Template/Element/folder/nav.ctp, line 19]

最佳答案

阅读错误信息,很清楚:

stream_get_contents() expects parameter 1 to be resource, integer given

所以你传递的是一个整数而不是一个资源。在这种情况下,第一件事是查找方法期望的内容。请参阅 stream_get_contents() 的 php 文档.它显然想要 a stream resource .查找什么是stream和一个 resource是然后采取相应的行动。

但是,您尝试的方法不会以这种方式工作,因为您没有访问文件系统中的文件。请参阅 fopen() 上的文档.

您必须在标记中将您的图像作为 base64 编码的二进制数据回显。在这里查看答案:Is it possible to put binary image data into html markup and then get the image displayed as usual in any browser?由于 base64 编码,这将增加图像的大小约 30%。

我不会对许多大图像执行此操作。从来没有自己做过很多,但我很确定浏览器会遇到性能问题。请注意,除了可能的性能问题外,此解决方案还可能存在安全问题。我可以想象,如果数据处理不当,可以利用它在页面标记中注入(inject)不需要的东西。

同时将图像存储在未明确为此任务创建的数据库中通常被认为是不良做法。将其存储在为此目的而制作的存储后端中,并引用数据库中的位置。

为了将来,如果您不理解它们,请记住阅读查找错误消息,如果您不知道它们的作用,请阅读文档。

关于php - 如何在元素 View 中显示个人资料图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46580083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com