代码之家  ›  专栏  ›  技术社区  ›  Anu

为什么取消链接并移动上传的文件不工作?

php
  •  2
  • Anu  · 技术社区  · 6 年前

    脚本

    我有一个文件上传器,我可以上传文件。还有另一个选项可以更新以前上载的文件。我也可以使用一些链接查看上传的文件。

    要求

    一切正常。假设我上传了文件。我可以使用链接查看此文件。然后我用另一个名为fileb的文件更新了该文件。我可以使用相同的链接查看此文件。这里的问题是,如果我第二次使用相同的文件名上传,就会有错误。因此,我按照以下方式修改了代码。

    if(file_exists($target_fileCadEdit)){
        unlink($target_fileCadEdit);
        move_uploaded_file($_FILES["fileCad"]["tmp_name"], $target_fileCadEdit);
    }else{
        move_uploaded_file($_FILES["fileCad"]["tmp_name"], $target_fileCadEdit);
    }
    

    问题

    将删除旧文件,并在同一位置正确更新新文件(注意,旧文件和新文件的文件名相同)。但当我使用相同的链接查看更新的文件时,它仍然显示旧文件。我实际检查了上传的文件,旧文件已经不在了,并用新文件进行了更新。但是当我使用链接单击视图时,它仍然显示旧文件。不确定程序从何处访问该已删除文件。

    有人能帮忙吗?

    编辑

    发现问题是由于浏览器缓存。我尝试手动删除浏览器缓存,然后再次尝试查看文件,现在它显示服务器中存在的实际文件。

    现在有问题

    现在的问题是,如何在运行脚本时自动清除缓存。一些建议是尝试使用标题标签。但我担心,如果配置错误,可能会影响性能。所以我用了另一种方法 clearstatcache(); . 但它似乎也不起作用。现在请看我的密码

    if(file_exists($target_fileCadEdit)){
        unlink($target_fileCadEdit);
        clearstatcache();
        move_uploaded_file($_FILES["fileCad"]["tmp_name"], $target_fileCadEdit);
        clearstatcache();
    }else{
        move_uploaded_file($_FILES["fileCad"]["tmp_name"], $target_fileCadEdit);
    }
    

    这是查看文件的链接。它使用了许多动态变量

    <td class="viewEditTd">
      <a href="<?php echo $locationForViewLink; ?><?php echo $slash; ?><?php echo $_POST['searchInput']; ?><?php echo $cadguiFolder; ?><?php echo $row['cadRevision']; ?><?php echo $slash; ?><?php echo $row['cadFile']; ?>" target="_blank" class="whiteLink"><span class="
            glyphicon glyphicon-folder-open" aria-hidden="true"></span> View </a>
    </td>

    有线索吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Anu    6 年前

    if(file_exists($target_fileCadEdit)){
        unlink($target_fileCadEdit);
        move_uploaded_file($_FILES["fileCad"]["tmp_name"], $target_fileCadEdit);
    }else{
        move_uploaded_file($_FILES["fileCad"]["tmp_name"], $target_fileCadEdit);
    }
    

    <td class="viewEditTd">
        <a href="<?php echo $locationForViewLink; ?><?php echo $slash; ?><?php echo $_POST['searchInput']; ?><?php echo $cadguiFolder; ?><?php echo $row['cadRevision']; ?><?php echo $slash; ?><?php echo $row['cadFile'].'?'; ?><?php echo generateRandomString(); ?>" target="_blank" class="whiteLink"><span class="glyphicon glyphicon-folder-open" aria-hidden="true"></span> View </a>
    </td>
    

    ? echo generateRandomString()

    This Post

    function generateRandomString($length = 10) {
        $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $charactersLength = strlen($characters);
        $randomString = '';
        for ($i = 0; $i < $length; $i++) {
            $randomString .= $characters[rand(0, $charactersLength - 1)];
        }
        return $randomString;
    }