【问题标题】:onerror image not displayed when image does not exist当图像不存在时,onerror 图像不显示
【发布时间】:2017-05-08 23:11:20
【问题描述】:

我正在使用此代码:

function base64_encode_image ($filename=string,$filetype=string) {
    if ($filename) {
        $imgbinary = fread(fopen($filename, "r"), filesize($filename));
        return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary);
    }
}}


<img src="<?php echo base64_encode_image ('img/123.jpg','jpg'); ?>" alt='' onerror="this.onerror=null;this.src='img/no-image.jpg';"/>

问题是虽然 123.jpg 图像不存在,但 onerror 图像 (no-image.jpg) 未显示。

我收到以下错误消息: 警告:filesize(): stat failed for img/123.jpg

任何帮助将不胜感激。

【问题讨论】:

    标签: php onerror


    【解决方案1】:

    您混淆了 PHP 和 javascript。
    最好的方法是在你的 PHP 函数中解决这个问题。

    例如:

    function base64_encode_image ($filename=string,$filetype=string) {
        if (!$filename || !file_exists($filename)) {
            $filename = 'img/no-image.jpg';
            $filetype = 'jpg';
        }
    
        $imgbinary = fread(fopen($filename, "r"), filesize($filename));
        return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary);
    }
    

    如果文件不存在,这里会取no-image.jpg。 在您的输出中,您可以删除 onerror:

    <img src="<?php echo base64_encode_image ('img/123.jpg','jpg'); ?>" alt='' />
    

    【讨论】:

      猜你喜欢
      • 2013-02-02
      • 2019-08-31
      • 2016-08-24
      • 1970-01-01
      • 2012-07-23
      • 2012-07-10
      • 2019-11-11
      • 2015-07-13
      • 1970-01-01
      相关资源
      最近更新 更多