代码之家  ›  专栏  ›  技术社区  ›  Gary Willoughby

PHP:从一个流(在img标记中)抓取一个图像,但是如果它不在那里,我就不想写img标记。怎么用?

  •  0
  • Gary Willoughby  · 技术社区  · 14 年前

    我目前在一个名为“view\u file.php”的基于web的文件中有这样的代码,用于从内部网络获取图像。

    <img src="put_file.php?type=<?=$TN_TYPE;?>&path=<?=$TN_PATH;?>&filename=<?=$TN_FILENAME;?>" />
    

    readfile()

    问题是如果没有可用的图像,而不是流式传输一个临时的'spacer.gif',我不想有一个img标签写在所有。

    你知道怎么做吗?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Pekka    14 年前

    • 你可以打电话给 put_file.php 在PHP中,查看它返回什么,以及它是否返回空值(或 404 头或其他)不要写img标签。明显的缺点:请求被提出了两次,这会使脚本复杂化。

    • 根据Ajax调用的结果,可以在JavaScript中创建image元素 放置文件.php . 明显的缺点:加载后不会直接显示,需要JavaScript。

    通过将测试请求的结果输入到 base64-encoded data: URI's ,但这是高度不兼容的(不支持IE),并且会使浏览器端的页面膨胀(图像数据加上33%的开销将分别直接出现在源代码或JavaScript内存中)。我不推荐。

    如果可能的话,我个人会坚持 spacer.gif 解决方案。

    更新: 404 当图像不在那里时,使用 onerror img 比如说,做一件事 <img onerror='this.style.display = "none"'> . 当然,需要Javascript。所有浏览器似乎都完全支持错误事件(参考 here ,仅德语抱歉,但您将看到图标:)。

        2
  •  1
  •   Nalum    14 年前