2013-06-05 73 views
19

我使用laravel 4,我需要改變上傳的圖片,我有它在:如何刪除laravel文件4

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

在編輯新的我想做出改變圖像格式,但我怎麼能刪除和上傳另一個文件。我使用:

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

的問題是,它不工作,它不是替換文件,所以我怎麼能刪除的圖像,所以我可以重新上傳。

在laravel 3我只用:

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

,但我沒有看到有關laravel文檔刪除文件什麼。

回答

41

我想你應該追加public_path()爲文件名,獲得真正的文件路徑,這樣

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

'文件::刪除(public_path($ ID .'_ news.jpg')) ;' – DutGRIFF

8

您可以輕鬆地做一些事情,如:

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

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

參考:Laravel-recipes Delete a File

+2

在刪除文件之前,您不必檢查文件是否存在。您可能想要在刪除它之後檢查它是否存在,因爲錯誤會被忽略。 –

+0

然後你可以在上面的代碼中添加一個'else'!這意味着檢查文件是否存在總是很方便! –

-2

這適用於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 '上傳/我-image.jpeg'; //從公共/

如果(文件::存在($的DestinationPath)){

File::delete($destinationPath); 

}

+0

$ destinationPath ='uploads /';你的文件存儲在哪裏File :: exists()檢查文件是否存在,如果是true,它就簡單地刪除 – Jsun