base64图片未显示在html <img>中

时间:2019-11-09 03:51:38

标签: javascript php

我正在尝试显示在php文件中转换的base64图像。但是,当图像不可用或不存在时,我html中的图像将显示为通用图像占位符。 如果有人想知道我是否要显示属于特定网页表单的图像。但是,我有多种形式,当我单击其中一种形式时,我希望能够看到相关的图像。

我已经走了这么远: 我的PHP文件如下:

$imageDate = date_format($currentdate, 'YmdHis');
$path = 'C:/Temp/MgrReportUploads';
$type = pathinfo($path, PATHINFO_EXTENSION);

$files = glob($path.
    '/'.$imageDate.
    '_*');

if (!empty($files)) {
    foreach($files as $image) {

        $vals['encodedImages'] = 'data:image/'.$type.
        ';base64,'.base64_encode($image);

    }
}

echo json_encode($ vals); 响应在“网络”选项卡上看起来像这样 returnImages:{,…}

images: "data:image/jpg;base64,QzovVGVtcC9NZ3JSZXBvcnRVcGxvYWRzLzIwMTkxMTA4MTM0MzM5X2plZGkxLmpwZw=="

js文件 //表单和图片上的回调变量

onSuccess: function(data) {

    var imgList = document.querySelector('#imageLst'); //div
    var img = document.createElement("img");
    img.setAttribute("src", data.encodedImages);
    imgList.append(img);
}

1 个答案:

答案 0 :(得分:1)

base64_encode($image)更改为base64_encode(file_get_contents($image))

glob返回一个包含匹配文件/目录的数组,如果没有文件匹配则返回一个空数组,否则返回FALSE。

您必须将文件内容而非文件路径传递到base64_encode