如何使用表单删除文件?

时间:2017-02-05 05:58:54

标签: php laravel octobercms

我使用的是基于Laravel的OctoberCMS。

我试图删除文件。我在文本框中输入文件名,然后按提交。

组件表单

<form method="POST" action="{{ url('/purge') }}">
    <input type="hidden" name="_handler" value="onPurge" />
    {{ form_token() }}
    {{ form_sessionKey() }}

    <input type="text" name="filename" /> 

    <input type="submit" name="submit" value="Purge" />  
</form>

组件PHP

public function onPurge(){
    $name = $_POST['filename'];

    if (!empty($_POST['submit'])) {
        $file->delete(storage_path("app/media/$name"));
    }
}

错误

Non-static method Illuminate\Database\Eloquent\Model::delete() should not be called statically

我试过

public function onPurge(){
    $name = $_POST['filename'];

    if (!empty($_POST['submit'])) {
        $file = new Video();
        $file->delete(storage_path("app/media/$name"));
    }
}

(也有完整路径/ var / www / mysite / public /)

该功能完成,无错误,但文件未删除。

2 个答案:

答案 0 :(得分:1)

您可以使用php函数取消链接。

if (!empty($_POST['submit'])) {
    $removed = unlink($path . $file);
}if(!$removed) {
   die('file could not be deleted');
}

答案 1 :(得分:1)

你的清除功能应该是,

public function onPurge(){
    $name = $_POST['filename'];
    $file_path = storage_path("app/media/$name");
    if(File::exists($file_path)){ // OR \File::exists($file_path)
     File::delete($file_path); // OR \File::delete($file_path)
    }
}

我觉得它应该有效。

试一试。