2017-06-09 74 views
0

我與laravel 5.4工作,我有我可以上傳我的標誌image和更新功能的形式,我有這樣的代碼:刪除圖像一個

//Save logo 
     if ($request->hasFile('logo')) { 
      $avatar = $request->file('logo'); 
      $filename = time() . '.' . $avatar->getClientOriginalExtension(); 
      $location = public_path('avatars/logos/'); 
      $request->file('logo')->move($location, $filename); 
      $oldFilename = $general_Settings->logo; 

      $general_Settings->logo = $filename; 
      Storage::delete($oldFilename); 
     } 

     $general_Settings->save(); 

更新我的形象是工作但正如你看到我有Storage::delete($oldFilename);這部分不工作,只是保留舊圖像。

你認爲是什麼問題?

+0

你檢查文件路徑是否正確? –

+0

是的,文件將保存在正確的路徑,只會不會刪除舊的。 – djhru

+0

您需要提供公共文件夾的完整路徑才能刪除圖片 –

回答

0

解決:

Filesystem.php我做我的本地root設置爲'root' => public_path('avatars/'),和改變了我的所有功能在我的應用程序,因爲沒有辦法救子文件夾中的圖像並將其刪除纔可以在子文件夾中保存的問題。

然後我更新的功能變成了這個樣子:

if ($request->hasFile('logo')) { 
     $avatar = $request->file('logo'); 
     $filename = 'sitelogo' . '-' . time() . '.' . $avatar->getClientOriginalExtension(); 
     $location = public_path('avatars/'); 
     $request->file('logo')->move($location, $filename); 


     $general_Settings->logo = $filename; 
     } 

     $general_Settings->save(); 

我希望幫助別人。

0

因爲,你已經存儲的標識文件名不僅沒有文件的完整路徑,

你需要給公共文件夾中刪除圖像的完整路徑。將刪除行更改爲:

if ($request->hasFile('logo')) { 
     $avatar = $request->file('logo'); 
     $filename = time() . '.' . $avatar->getClientOriginalExtension(); 
     $location = public_path('avatars/logos/'); 
     $request->file('logo')->move($location, $filename); 

     $oldFilename = $general_Settings->logo; 
     $file_path = "avatars/logos/".$oldFilename; 

     $general_Settings->logo = $filename; 
     Storage::delete($file_path); 
    } 

    $general_Settings->save(); 

這可能行得通。

+0

不,還存在舊圖像。 – djhru

+0

我已經更新了再次嘗試,否則你可能沒有正確的權限存儲文件夾 –

+0

仍然存在舊照片或者我可能會把你的代碼錯誤,請你給我完整的代碼? – djhru