我正在寻找一种使用PHP从服务器删除文件的方法。基本上我以这种方式在页面上列出了我的文件:
<ul>
<li><a href="delete_file.php?file=uploads/file_01.jpg">Delete File 01</a></li>
<li><a href="delete_file.php?file=uploads/file_02.jpg">Delete File 02</a></li>
<li><a href="delete_file.php?file=uploads/file_03.jpg">Delete File 03</a></li>
</ul>
问题是我不知道如何让我的delete_file.php文件工作。我认为它需要是这样的:
<?php
$path="uploads/file_01.jpg";
if(unlink($path)) echo "File Deleted";
?>
...但我不知道如何让$ path更改为我点击删除的文件。
答案 0 :(得分:23)
虽然你必须非常小心地让用户能够删除文件,但我会给你足够的绳索让自己挂起
定义一个基本目录,其中包含任何将被删除的文件
$base_directory = '/home/myuser/';
然后删除文件
if(unlink($base_directory.$_GET['file']))
echo "File Deleted.";
答案 1 :(得分:5)
<?php
$file_to_delete = $_GET['file'];
if (is_file($file_to_delete)){
echo (unlink($file_to_delete) ? "File Deleted" : "Problem deleting file";
}
?>
我不会撒谎,除了检查是否是文件之外,不知道更好的方法来清理$ _GET ['file']。如果这不是一种有效的方式,专家请加入。(也许请遵循指南present in this SO topic?)
答案 2 :(得分:0)
有时您可能希望动态创建路径。
例如,我在不同的地方使用CMS,因此不应使用固定的定义。
我的项目结构:
-myProject
| -admin
| --app
| ---控制器
|-上传
'admin/app/controllers/'
这是正在运行的php文件的路径。
我的'upload/'
中的php文件
但是将文件上传到$path = str_replace('admin/app/controllers/', '', $path);
echo $path; //'/home/myProject/public_html/upload/myFile'
我们需要删除不必要的目录以获取正确的路径。上传文件夹中的文件是不必要的,因此我们不需要“ admin / app / controllers /”。因此,我们将删除此部分。
if (file_exists($path)){
if(unlink($path)){
echo "File deleted";
}
}else{
echo "File is not exists";
}
现在我们有了正确的路径,我们可以删除文件了。
export class PersonDetailsComponent implements OnInit {
@Input() personInput: Person;
get person(){
return personInput || {};
}