You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP图片上传脚本:未选图时自动添加占位图的实现方法

解决方案:添加占位图自动存入逻辑

首先,准备占位图文件:在你的uploads/目录下放入一张占位图,命名为placeholder.jpg(格式可选用你允许的类型,比如jpg/png)。

接下来修改post.php的代码,调整逻辑:当用户未选择文件时,直接使用占位图的信息插入数据库,避免空数据导致应用崩溃。

修改后的post.php代码:

<?php
include 'config.php';
$statusMsg = '';

$targetDir = "uploads/";
// 默认设置为占位图文件名
$fileName = 'placeholder.jpg';
$targetFilePath = $targetDir . $fileName;

if(isset($_POST["submit"])){
    // 检查是否有上传文件
    if(!empty($_FILES["file"]["name"])){
        $uploadedFileName = basename($_FILES["file"]["name"]);
        $uploadedTargetPath = $targetDir . $uploadedFileName;
        $fileType = pathinfo($uploadedTargetPath,PATHINFO_EXTENSION);
        
        // 允许的文件格式
        $allowTypes = array('jpg','png','jpeg','gif','pdf','mp3');
        if(in_array($fileType, $allowTypes)){
            if(move_uploaded_file($_FILES["file"]["tmp_name"], $uploadedTargetPath)){
                // 上传成功,替换为上传的文件名
                $fileName = $uploadedFileName;
                $statusMsg = "文件: ".$fileName." 已成功添加到帖子。前往主页: <a href='strona_glowna.php'>主页</a>";
            }else{
                $statusMsg = "抱歉,上传文件时出错了。";
            }
        }else{
            $statusMsg = '抱歉,仅允许上传JPG、JPEG、PNG、GIF、PDF格式文件。';
        }
    }else{
        // 未选择文件,使用占位图
        $statusMsg = "未选择上传文件,已使用占位图。前往主页: <a href='strona_glowna.php'>主页</a>";
    }
    
    // 统一执行数据库插入,确保必有数据写入
    // 使用预处理语句防止SQL注入
    $stmt = $db->prepare("INSERT into images (file_name, uploaded_on) VALUES (?, NOW())");
    $stmt->bind_param("s", $fileName);
    if(!$stmt->execute()){
        $statusMsg = "数据库插入失败,请重试。";
    }
    $stmt->close();
}
?>

关键改动说明:

  • 初始化$fileName为占位图文件名,确保无论是否上传文件,都有有效值
  • 调整执行逻辑:先判断表单提交,再处理上传情况,未上传则保留占位图文件名
  • 统一在最后执行数据库插入,保证一定会写入数据,避免应用崩溃
  • 替换原SQL拼接写法,使用预处理语句规避SQL注入风险

你可根据需求修改占位图的文件名和格式,只要确保它在uploads/目录下,且属于允许的文件类型即可。

内容的提问来源于stack exchange,提问作者olioxpl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 03:47:14