19

我正在使用 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 文档中删除文件的任何内容。

4

6 回答 6

43

我认为您应该将 public_path() 附加到文件名,以获取真实的文件路径,如下所示

File::delete(public_path().$id.'_news.jpg');
于 2013-09-09T08:49:55.660 回答
13

Laravel 4 中还有删除方法:
src/Illuminate/Filesystem/Filesystem.php

否则就用好旧的unlink()!?

于 2013-06-06T00:00:53.450 回答
8

您可以轻松地执行以下操作:

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

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

参考:Laravel-recipes 删除文件

于 2014-08-10T01:05:49.520 回答
2

其他删除用法:

// Delete a single file
File::delete($filename);

// Delete multiple files
File::delete($file1, $file2, $file3);

// Delete an array of files
$files = array($file1, $file2);
File::delete($files);

来源:http://laravel-recipes.com/recipes/133/deleting-a-file

于 2016-01-19T11:37:21.633 回答
0
$destinationPath = 'uploads/my-image.jpeg'; // from public/

if ( File::exists($destinationPath) ) {
  File::delete($destinationPath);
}
于 2016-06-13T19:34:08.760 回答
-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();
于 2015-03-16T05:56:13.013 回答