【发布时间】:2020-06-12 19:49:33
【问题描述】:
我有一个页面可以将文件上传到服务器的文件夹并在 MySQL 中写入文件的引用。现在,我可以通过单击链接查看和下载文件。
但我也想从服务器目录和数据库中删除文件,这样文件名就不会出现在显示页面中。我有一个很棒的字体垃圾图标,我希望在单击该图标后删除当前文件。
我尝试使用unlink 和unset 方法并使用文件路径作为参数,但它总是显示错误:
Warning: unlink(uploads/75-horse.jpg): No such file or directory in C:\wamp64\www\mysite\upload-page.php on line 214
我的代码:
<tbody>
<?php
$i = 1;
while ($row = mysqli_fetch_array($result)) {
?>
<tr>
<td><?php echo $i++; ?></td>
<td><?php echo $row['filename']; ?></td>
<td><a href="uploads/<?php echo $row['filename']; ?>" target="_blank">View</a></td>
<td><a href="uploads/<?php echo $row['filename']; ?>" download>Download</a></td>
<td>
<!--trying to delete the file: starts-->
<a href="?delete=1">
<i class="fa fa-trash-o" style="color:red"></i>
</a>
<?php
$current_file_name = $row['filename'];
$file_path = "uploads/$current_file_name";
if (isset($_GET['delete'])) {
unlink($file_path);
}
?>
<!--trying to delete the file: ends-->
</td>
</tr>
<?php } ?>
</tbody>
谁能帮我弄清楚为什么会发生这种错误以及在 PHP 中删除文件的最佳实践?
尝试两小时后更新: 最后这个技巧帮助我删除文件而不显示任何错误/警告。
if (isset($_GET['delete'])) {
if (is_file($_SERVER['mywebsite.se/'] . 'uploads/' . $current_file_name)) {
unlink($_SERVER['mywebsite.se/'] . 'uploads/' . $current_file_name);
}
}
但是,尽管它从目录中删除了文件,但网页仍然显示带有删除图标的文件名。谁能指导我如何才能完全删除该行以使已删除的文件不再出现?
【问题讨论】:
-
你正在处理一个文件结构,你需要使用完整的服务器路径
-
不朽,我还不是很清楚。我在 Wamp 服务器下的 localhost 中运行它。如何在将删除功能上传到真实服务器之前对其进行测试?我尝试过使用本地服务器的路径 $file_path = "localhost/mysite/uploads/$current_file_name";它显示相同的错误。
-
wamp 上的路径看起来像:
C:\wamp64\www\mysite..
标签: php html file get web-development-server