【问题标题】:PHP image Streaming in Joomla with MVC使用 MVC 在 Joomla 中进行 PHP 图像流式处理
【发布时间】:2011-08-03 08:55:44
【问题描述】:

你好,我有一个问题让我有点难过!

我正在尝试在 joomla 组件中实现图像流。 Image 文件夹由虚拟主机之外的服务器上的多个站点共享,因此无法直接从该站点访问。

我尝试了以下方法:

testfile.php

<img src="testImgGen.php" />

testImgGen.php

?php
$im = imagecreatefrompng("c:xampp/htdocs/docs/images/282/Img1.png");
header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);
exit; 
?>

这很好用

所以尝试在 Joomla 组件内部实现: 视图内的 src 链接:

"<img src='?option=com_cat&view=item&task=prevIMG&tmpl=Component&fid=282&file=Img1.png' />"

控制器内部:

function prevIMG(){
require_once(JPATH_COMPONENT.DS.'models'.DS.'details.php');
$model=new CatModelCat_details ;
$model->prevImg();
}

模型内部:

function prevImg(){
    $doc =& JFactory::getDocument();
    $doc->setMimeEncoding('image/png');
    $img = "C:xampp/htdocs/docs/images/".$_GET[fid]."/".$_GET[file];
    $im = imagecreatefrompng($img);
    imagepng($im);
    imagedestroy($im);
        }

这正在返回......什么都没有 我试过 readfile()/get_contents_fromfile() 我创建了不通过任何标题的空白模板,并且使用了“header('Content-Type: image/png');” 我开始进入 bash head against 桌面阶段!
如果有人有任何建议/如果我很高兴听到它!

我偶尔会将图像输出为字符串!或者我得到“解释为具有 mime 类型图像的文档”或“解释为具有 mime 类型 test/html 的图像”

干杯

基兰

【问题讨论】:

  • 尝试转到 url index.php?option=com_cat&amp;view=item&amp;task=prevIMG&amp;tmpl=Component&amp;fid=282&amp;file=Img1.png 并告诉答案
  • 在 joomla 框架中你有什么需要它的原因吗?我的意思是,你当然需要保护它,但仅仅使用 joomla!-index.php 不会更安全。
  • 看看我所说的“保护”是什么意思:如果有人输入:?fid=../../../../My Images&amp;file=photo.jpg,会发生什么?
  • Subdigger: 直接到 URL :- 存在空白图像页面或将图像输出为字符串 "�PNG IHDR��M$mo IDATx���w|\յ���}�" ...等
  • giraff:我想我明白你在说什么......如果我把整个东西放在模板中的一个新文件中,即 tmpl=image 并从那里运行它?

标签: php image model-view-controller joomla stream


【解决方案1】:

您需要对组件请求使用“原始”参数。一个快速的谷歌搜索找到了这个教程。 http://blog.joomlatools.eu/2008/01/joomla-15-generating-raw-ouput.html

【讨论】:

  • 我已经尝试过 &no_html=1 和 &format=raw 我也尝试在 View 中创建一个 view.raw.php 仍然没有...我可以让它将流输出为文本而不是作为图片!很郁闷
  • 你可以在 imagepng 之前尝试 var_dump(headers_sent())。如果为真,则在错误日志中搜索输出开始的位置。或者,运行 while (@ob_end_clean()){}
【解决方案2】:

您应该确保代码中没有错误。如果出现错误,并且 php-error-reporting 已打开,那么 PHP 可能会在您的 png 输出中添加错误文本的前缀。在这种情况下,浏览器假定它是文本文件而不是图像文件。

【讨论】:

    猜你喜欢
    • 2018-05-18
    • 2015-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多