Php 为什么取消链接并移动上传的文件不起作用

Php 为什么取消链接并移动上传的文件不起作用,php,Php,场景 我有一个文件上传器,我可以上传文件。还有另一个选项可以更新以前上载的文件。我还可以使用一些链接查看上传的文件 要求 一切正常。假设我上传了一个文件。我可以使用链接查看此文件。然后我用另一个名为fileB的文件更新了该文件。我可以使用相同的链接查看此文件。这里的问题是,如果我使用相同的文件名第二次上传,它将有错误。因此,我按照以下方式修改了代码 if(file_exists($target_fileCadEdit)){ unlink($target_fileCadEdit);

场景

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

要求

一切正常。假设我上传了一个文件。我可以使用链接查看此文件。然后我用另一个名为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);
}
问题

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

有人能帮忙吗

编辑

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

现在有问题了

现在的问题是,如何在运行脚本时自动清除缓存。一些建议是尝试使用标题标签。但我担心,如果配置错误,可能会影响性能。所以我使用了另一种方法
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);
}
这是我查看文件的链接。它使用了许多动态变量


根据Stack over flow成员的建议,我可以通过使文件打开链接url动态化来解决这个问题,因此链接总是指向不同的文件名。 这是我最后的工作代码

文件解除链接和上载块

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>
文件查看块

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>

浏览器缓存。有两种解决办法。1.更改url sufix(url/your image.jpg?4626)2。配置标题:缓存控制:没有缓存我不明白你所说的更改url后缀是什么意思。我可以知道你指的是什么后缀吗?我看到您添加了.jpg,其中有一些get变量作为后缀。对于第二种方法,如果我进行缓存控制,它在运行站点的其他功能时会有任何问题吗?我的网站是为一些文件上传,查看,登录系统,文件管理等。这里没有办法删除浏览器缓存的单个文件。不,你不能物理删除缓存的文件。相反,您可以动态生成指向该文件的链接,例如file\u url?some\u random_str@WaqarUlAziz我读了一些关于clearstatcache()的文章;。这说明我们可以使用该命令清除缓存。我也在努力解决这个问题。顺便说一句,我想知道更多关于使用后面的随机字符串动态生成文件链接的信息。你能举例说明怎么做吗?我更新了我的问题,添加了查看文件的链接。您能参考一下并提供帮助吗?clearstatcache()用于清除服务器上的缓存,而不是浏览器上的缓存,在您的场景中不需要这样做。