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

PHP如何将表格内文件名转为可点击链接并在新标签页打开文件

需修改的代码步骤

前置准备

先在项目根目录创建uploads文件夹,设置文件夹权限为755,所有上传的pdf、图片都会存储在这个目录下。


1. 修复psaadd.php的文件上传逻辑(当前代码仅接收文件名,未实际存储文件到服务器)

你现在的表单缺少文件上传必需的enctype属性,同时需要补充文件移动到服务器目录的处理逻辑,修改后完整代码如下:

<?php
include_once 'connection.php';
session_start();
if(!$_SESSION['login']){
   header("location:index.php");
   die;
}
if(count($_POST)>0) {
    // 处理文件上传
    $psa_file = $_FILES['PSA'];
    $psa_name = '';
    if($psa_file['error'] == 0){
        // 避免文件名重复,加时间戳前缀
        $psa_name = time().'_'.$psa_file['name'];
        // 移动文件到uploads目录
        move_uploaded_file($psa_file['tmp_name'], 'uploads/'.$psa_name);
    }
    // 若需更高安全性可替换为预处理语句避免SQL注入,此处按原有逻辑修改
    if($psa_name){
        mysqli_query($conn,"UPDATE collegestud set PSA = '" . $psa_name .  "'  WHERE ID='" . $_POST['ID'] . "'");
    }
    $id = $_POST['ID'];
    header('Location: updatecollege1.php?id='.$id);
}
$result = mysqli_query($conn,"SELECT * FROM collegestud WHERE id='" . $_GET['id'] . "'");
$row= mysqli_fetch_array($result);
?>

<!-- 表单添加enctype属性才能正常上传文件 -->
<form action="" method="POST" enctype="multipart/form-data" onsubmit="return confirm('Are you sure you want to save changes?');">
    <div class= "container2">
        <p style="font-weight: bold; font-size: 35px; text-align: center;">PSA</p>
            <input type="hidden" name="ID" class="txtField" value="<?php echo $row['ID']; ?>">
            <div class = "container3">
                <center>
                    <input name="PSA" type = "file" accept = '.pdf,.jpg,.jpeg,.png'>
                </center>

注:Form137、2x2图片的上传逻辑和PSA完全一致,按同样方式修改对应上传页面即可


2. 修改addrequirements.php,把表格内纯文本文件名替换为可点击链接

找到表格中展示PSA、Form137、图片的三个<td>标签,修改为以下逻辑:

<tr>
    <td><?php echo $row["Stud_ID"]; ?></td>
    <td><?php echo $row["Course"]; ?></td>
    <td><?php echo $row["Lastname"]; ?></td>
    <td><?php echo $row["Firstname"]; ?></td>
    <!-- PSA字段改为跳转链接 -->
    <td>
        <?php if(!empty($row["PSA"])){ ?>
            <a href="uploads/<?php echo $row["PSA"]; ?>" target="_blank"><?php echo $row["PSA"]; ?></a>
        <?php }else{ echo "未上传"; } ?>
    </td>
    <!-- Form137字段改为跳转链接 -->
    <td>
        <?php if(!empty($row["Form137"])){ ?>
            <a href="uploads/<?php echo $row["Form137"]; ?>" target="_blank"><?php echo $row["Form137"]; ?></a>
        <?php }else{ echo "未上传"; } ?>
    </td>
    <!-- 2x2图片字段改为跳转链接 -->
    <td>
        <?php if(!empty($row["Picture"])){ ?>
            <a href="uploads/<?php echo $row["Picture"]; ?>" target="_blank"><?php echo $row["Picture"]; ?></a>
            <!-- 可选拓展:直接在表格显示缩略图 -->
            <!-- <img src="uploads/<?php echo $row["Picture"]; ?>" width="50" alt="学生照片"> -->
        <?php }else{ echo "未上传"; } ?>
    </td>
    <td><a style="color:green;"  href="updatecollege1.php?id=<?php echo $row["ID"]; ?>"><i class="fas fa-folder-plus fa-2x "></i></a>&emsp;
    <span><a style="color:red"  href="deletecollege.php?ID=<?php echo $row["ID"]; ?>"onclick="return confirm('Do you really want to delete this student?')"><i class="fas fa-user-minus fa-2x"></i></a></span>
  </td>
  </tr>

target="_blank"属性会让点击链接后自动在新标签页打开文件,主流浏览器本身支持直接预览pdf、jpeg、png等常用格式


可选优化:updatecollege1.php补充预览入口

可以在编辑页面直接显示已上传文件的预览链接,修改对应代码段即可:

<div class = "container3">    
    <strong><left>PSA&emsp;&emsp;&emsp;</left></strong>
    <span>&emsp;&emsp;&emsp;
    <?php if(!empty($row["PSA"])){ ?>
        <a href="uploads/<?php echo $row["PSA"]; ?>" target="_blank">预览已上传文件</a> | 
    <?php } ?>
    <input id="ra" type="text" value="<?php echo $row['PSA']; ?>" readonly>
    <a href="psaadd.php?id=<?php echo $row["ID"]; ?>">ADD or UPDATE</a></span><br>

安全提示

  • 建议对uploads目录配置禁止执行php等脚本的权限,避免恶意文件上传执行
  • 数据库操作建议替换为mysqli预处理语句,避免SQL注入风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:36:01