2013-06-05 16 views
19

löschen Ich verwende Laravel 4 und ich brauche ein hochgeladenes Bild zu ändern, ich habe es in:Wie man eine Datei in Laravel 4

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

Wenn die neuen der Bearbeitung ich eine Veränderung Bildform machen wollen , aber wie könnte ich eine andere Datei löschen und hochladen. Ich verwende:

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

Das Problem ist es, dass es nicht funktioniert, es ist nicht die Datei zu ersetzen, so wie könnte ich das Bild löschen, damit ich wieder laden konnte.

In Laravel 3 I nur verwendet:

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

Aber ich sehe nichts über Dateien in Laravel docs zu entfernen.

Antwort

41

Ich denke, Sie sollten public_path() anhängen zu Dateinamen, echte Dateipfad zu erhalten, wie diese

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

'File :: löschen (public_path ($ id .'_ news.jpg ')) ; ' – DutGRIFF

8

Sie einfach so etwas wie tun:

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

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

Referenz: Laravel-recipes Delete a File

+2

Sie müssen nicht überprüfen, ob die Datei existiert, bevor Sie sie löschen. Sie können jedoch überprüfen, dass es nicht existiert, nachdem Sie es gelöscht haben, da Fehler stillschweigend ignoriert werden. –

+0

Dann könnten Sie dem obigen Code ein 'else' hinzufügen! Das bedeutet, dass die Überprüfung der Datei immer praktisch ist! –

-2

Dies funktioniert auf Laravel 4.2.

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'; // aus öffentlichen/

if (File :: existiert ($ DestinationPath)) {

File::delete($destinationPath); 

}

+0

$ destinationPath = 'uploads /'; wo Sie die Datei gespeichert haben File :: exists() check file present oder nicht wenn true, wird einfach gelöscht – Jsun