如何为MySQL图片上传系统设置默认图片(基于file_exists())
解决默认图片显示的方案
嘿,这个需求太常见了,我来帮你捋清楚怎么实现!核心思路就是先判断目标图片是否存在(包括数据库里的图片字段是否为空),不存在就替换成默认图,咱们一步步来:
第一步:区分服务器路径和Web访问路径
首先得明确:file_exists()是PHP用来检查服务器文件系统中文件是否存在的,所以得用服务器能识别的物理路径;而img标签的src是给浏览器看的Web访问路径,这俩不能搞混。
第二步:编写判断逻辑
你可以把这段逻辑放在显示图片的代码前:
// 定义服务器端的上传目录绝对路径(根据你的实际服务器结构调整) $server_upload_dir = $_SERVER['DOCUMENT_ROOT'] . '/otk/pc/uploads/'; // 从数据库获取图片文件名 $db_image = $row['obrazok']; // 判断:如果数据库字段不为空,且服务器上存在该文件,就用原图片;否则用默认图 if (!empty($db_image) && file_exists($server_upload_dir . $db_image)) { $show_image = '../otk/pc/uploads/' . $db_image; } else { // 替换成你的默认图片路径,比如uploads目录下的default.jpg $show_image = '../otk/pc/uploads/default.jpg'; }
第三步:修改图片展示代码
把原来的img标签改成用上面的变量:
<td><img src="<?php echo $show_image; ?>" height="100" width="100"></td>
额外注意事项
- 一定要确保默认图片(比如
default.jpg)真的存在于你指定的目录里,不然还是会显示破图 - 如果你的服务器路径结构和我假设的不同,可以用
realpath($server_upload_dir)来验证路径是否正确 - 要是默认图片想放在其他目录,直接修改
$show_image里的路径就行,只要和实际位置对应上
内容的提问来源于stack exchange,提问作者Radoslav Rác
相关产品推荐
相关产品推荐

