我想从我的数据库以及我的public / uploads文件夹中删除pdf文件。它正在从数据库中删除,但不是从我的公共文件夹中删除。
这是我的控制者:
public function deleteArticle($id) {
$article = Article::findOrFail($id);
File::delete($article->document);
$article->delete();
return redirect()->back();
}
/*This handles the posting of the file into the folder and storing of the url into the datab
$file = Input::file('document');
$file->move('uploads', $file->getClientOriginalName());
$document = asset('uploads/'.$file->getClientOriginalName());
$newArticle->document = $document;
答案 0 :(得分:0)
由于您当前正在将数据库保存到数据库(通过使用asset()函数),因此您无法使用该信息删除该文件。
通常只需将文档名称保存在数据库中即可。
$document = $file->getClientOriginalName();
$newArticle->document = $document;
要删除该文件,您可以调用:
File::delete(public_path('uploads/'.$article->document);
要链接到您的文件,您可以使用asset()方法
asset('uploads/'.$article->document);
答案 1 :(得分:0)
在数据库中存储完整的URL是一个坏主意。以后很难维护文件。最好的方法是只存储带扩展名的文件名。
如果您只在数据库中有文件名,则可以这种方式删除文件:
$article = Article:findOrFail($id);
$document = $article->document; // take the image name from database
File::delete('uploads/'.$document); // delete the file
$article->delete() // delete the record from database
修改强>
如果您仍想在数据库中使用URL,可以使用substr()
和strpos()
功能获取图像名称。例如:
$image = substr($article->document,0,strpos("uploads/"));
您只能从URL获取文档名称并使用它来删除文件。
要仅存储文件名,请按照以下步骤操作:
$document = $request->file('document')->getClientOriginalName();