2017-09-22 15 views
2

私はLaravelで新しいです。私は自分のプロジェクトのパブリックフォルダからいくつかのファイルを削除しようとしていました。私はweb.phpLaravel。 unlink( 'file path'):許可が拒否されました

Route::get('/showFile/{id}/delete',['as'=>'delete', 'uses'=>'[email protected]']); 

でこのルートで私の見解

<a href="{{ action('[email protected]',$link['id']) }}" class="btn btn warning"> 
    <button id="elimina" class="btn btn-danger" type="submit">Elimina</button> 
</a> 

に入力し、Deleteキーを押したときに

public function delete($id) 
{ 
    $files = File::find($id); 
    $filedelete = $files['name']; 
    Storage::delete('public/upload/',$filedelete); 
    $files->delete(); 
    return back(); 
} 

に従うように定義 '削除' 機能は、それが私にこのエラーメッセージを表示します

unlink(C:\wamp64\www\laravel\[nameproject]\storage\app\public/upload): Permission denied 

(試行)可能な限り明確に、私はデータベースとこのフォルダにファイルをアップロードします。 $ idは、このファイルの参照があるテーブルの主キーです。ファイルの正確な名前を記述すれば、問題は$ files ['name']であると私は思う。しかし、私はこれを動的に削除する必要があります。私は明確であることを願っています。

ありがとうございます。ではごきげんよう。関数内のこの行では

PS削除し、それが私のファイルの正しい名前を返し

Storage::delete('public/upload/[filename]'); 

編集

$files = File::find($id); 
$filedelete = $files['name']; 
return "".$filedelete; 

動作します。だから、私の問題はちょうどそのフォルダからそれを削除する方法ですか?

+0

に入れどのくらいのパスの依存

public_path().'/uploads/'.$files->filePathColumnName 

あなたのCドライブは、UACによって保護またはそれが唯一の管理者アクセスでいますか? –

+0

保護なし、管理者アクセスのみ。手動でファイルの名前を挿入しないと、ファイルを追加したり編集したりできます。 –

+0

名前に問題があると思われる場合は、削除する前に名前を出力して、期待どおりに表示されているかどうかを確認してください。また、ディスクにファイルを書き込むときに、php delete関数を実行しているのと同じユーザーが所有しているとは限りません。 –

答えて

0

あなたは、これは動作するはずですので、あなたは、DB内のファイルへの参照を格納し、言った:

$files = File::find($id); 
Storage::delete('public/upload/'.$files->filePathColumnName); 

はに、変更しました。あなたの削除で。 はおそらくとなるだろう:あなたはデシベル

+0

あなたのコードは書かれていますが、dbから音声は削除されますが、記憶フォルダからは削除されません –

+0

dd( '/ path/to/the/file)ファイルが存在していることを確かめ、\ Storage :: deleteの前にバックスラッシュを入れます。 – BobB

+0

最後に動作します! BobBさん、ありがとうございます –

関連する問題