2016-10-10 16 views
0

私のデータベースと私のpublic/uploadsフォルダのpdfファイルを削除します。データベースから削除していますが、自分のパブリックフォルダからは削除していません。Laravel 5.1フォルダからファイルを削除しない

これは私のコントローラです:

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

あなたは何をで保存します$ article->ドキュメント:

は、ファイル名のみがこれを辿る保存するには?それはpublic/uploads/document1.pdfまたは単にdocument1.pdfのようなものですか? –

+0

'$ article-> document'には' http:// localhost/blog/public/uploads/name_of_document.pdf'が含まれています。それは私のデータベースのリンクです – nana

+0

残念ながら、これは理想的ではありません。ファイルパスではなくURLを保存するからです。そのファイルにURLを指定することで、ファイルを削除することはできません。 –

答えて

0

あなたが現在あなたがその情報を使用してファイルを削除することはできません(資産()関数を使用して)データベースへのURLを保存していると。

通常、データベースにドキュメント名だけを保存すれば十分です。

$document = $file->getClientOriginalName(); 

    $newArticle->document = $document; 

ファイルを削除するには、呼び出すことができます。

File::delete(public_path('uploads/'.$article->document); 

があなたのファイルにリンクするデータベース内の完全なURLが保存資産()メソッド

asset('uploads/'.$article->document); 
+0

が表示されますが、削除しようとすると' Model.php行のLogicException 2673: リレーションシップメソッドは、Illuminate \ Database \ Eloquent \ Relations \ Relation'オブジェクトを返さなければなりません。 – nana

+0

したがって、document()... –

+0

という関係メソッドがありますか。私はあなたの努力に本当に感謝します.... – nana

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 

編集

substr()strpos()の機能を使用して名前を指定します。例:

$image = substr($article->document,0,strpos("uploads/")); 

URLからドキュメント名のみを取得し、それを使用してファイルを削除できます。

$document = $request->file('document')->getClientOriginalName(); 
+0

はい、私は完全に理解していますが、ファイル名だけを保存するにはどうすればいいのですか?この '$ file-> move( 'uploads'、$ file-> getClientOriginalName()) ; $ document = asset( 'uploads /'。$ file-> getClientOriginalName()); $ newArticle-> document = $ document; 'URL全体を保存します – nana

+0

私の答えを見ますか? –

+0

答えが更新されました@nana – smartrahat

関連する問題