2013-06-05 17 views
19

Używam laravel 4 i muszę zmienić przesłanego obrazu, mam go w:Jak usunąć plik w laravel 4

Public 
--uploads 
---news 
----id_news.jpg 

Podczas edycji nowych Mówię chcesz złożyć formularz zmiany obrazu , ale jak mogę usunąć i przesłać inny plik. Używam:

Input::file('img')->move('uploads/news', $id.'_news.jpg'); 

Problemem jest to, że to nie działa, to nie zastępując plik, tak jak mogę usunąć zdjęcie więc mogę przesłać ponownie.

W laravel 3 użyłem tylko:

File::delete('path/to/file'); 

Ale nie widzę nic na temat usuwania plików w Dokumentach laravel.

Odpowiedz

41

myślę, że należy dołączyć public_path() do nazw plików, aby uzyskać rzeczywistą ścieżkę do pliku, jak to

File::delete(public_path().$id.'_news.jpg'); 
+2

'File :: delete (public_path ($ id .'_ news.jpg ')) ; ' – DutGRIFF

8

można łatwo zrobić coś takiego:

$filename = public_path().'/uploads/foo.bar'; 

if (File::exists($filename)) { 
    File::delete($filename); 
} 

referencyjny: Laravel-recipes Delete a File

+2

Nie trzeba sprawdzać, czy plik istnieje przed usunięciem. Możesz jednak chcieć sprawdzić, czy nie istnieje po usunięciu, ponieważ błędy są milcząco ignorowane. –

+0

Następnie możesz dodać "else" do powyższego kodu! Co oznacza, że ​​sprawdzenie, czy plik istnieje, zawsze jest przydatny! –

-2

Działa to w wersji 4.2a.

File::delete(storage_path()."/ProductSalesReport-20150316.csv"); 

// Here are some other paths to directories laravel offers, Hope this 
    helps 

/* Path to the 'app' folder */ 
echo app_path(); 

/* Path to the project's root folder */ 
echo base_path(); 

/* Path to the 'public' folder */ 
echo public_path(); 

/* Path to the 'app/storage' folder */ 
echo storage_path(); 
0

$ destinationPath = 'uploads/my-image.jpeg'; // z publicznego/

if (File :: istnieje ($ destinationPath)) {

File::delete($destinationPath); 

}

+0

$ destinationPath = 'uploads /'; gdzie plik jest przechowywany Plik :: exists() sprawdź plik obecny, jeśli jest prawdziwy, po prostu usunięty – Jsun