我想删除存储在storage / app / myfolder / file.jpg中的文件。我尝试过以下代码,但这些都不起作用:
use File
$file_path = url().'/storage/app/jobseekers_cvs/'.$filename;
unlink($file_path);
和
use File
$file_path = public_path().'/storage/app/myfolder/'.$filename;
unlink($file_path);
和
use File
$file_path = app_path().'/storage/app/myfolder/'.$filename;
unlink($file_path);
还有,
File::Delete('/storage/app/myfolder/'.$filename);
请帮忙。
答案 0 :(得分:19)
您可以像这样使用Laravels facade Storage
:
Storage::delete($file);
或者您可以使用它:
unlink(storage_path('app/folder/'.$file));
如果要删除目录,可以使用:
rmdir(storage_path('app/folder/'.$folder);
要提到的一个重要部分是,您应首先检查文件或目录是否存在。
因此,如果你想删除一个文件,你应该这样做:
if(is_file($file))
{
// 1. possibility
Storage::delete($file);
// 2. possibility
unlink(storage_path('app/folder/'.$file));
}
else
{
echo "File does not exist";
}
如果你想查看它是一个目录,请执行以下操作:
if(is_dir($file))
{
// 1. possibility
Storage::delete($folder);
// 2. possibility
unlink(storage_path('app/folder/'.$folder));
// 3. possibility
rmdir(storage_path('app/folder/'.$folder));
}
else
{
echo "Directory does not exist";
}
答案 1 :(得分:5)
我找到了答案。这段代码对我有用。
unlink(storage_path('app/foldername/'.$filename));
答案 2 :(得分:3)
使用storage
//demo
use Illuminate\Support\Facades\Storage;
Storage::delete($filename);
答案 3 :(得分:2)
Storage Facade的默认根目录是在config / filesystems.php中配置的,默认值为:
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
所以您应该使用:
Storage::delete('myfolder/'.$filename)
答案 4 :(得分:0)
此代码对我有用。
use Illuminate\Support\Facades\Storage;
....
$storagePath = Storage::disk('local')->getDriver()->getAdapter()->getPathPrefix();
if(file_exists($storagePath.$file)) unlink($storagePath.$file);
答案 5 :(得分:0)
delete方法接受单个文件名或要从磁盘中删除的文件数组:
use Illuminate\Support\Facades\Storage;
Storage::delete('file.jpg');
Storage::delete(['file.jpg', 'file2.jpg']);
如有必要,您可以指定应从中删除文件的磁盘:
use Illuminate\Support\Facades\Storage;
Storage::disk('s3')->delete('folder_path/file_name.jpg');
删除目录
最后,可以使用deleteDirectory方法删除目录及其所有文件:
Storage::deleteDirectory($directory);
答案 6 :(得分:0)
尝试:
unlink(public_path('uploads\users'). DIRECTORY_SEPARATOR .$user->image);
这对我有用。
答案 7 :(得分:0)
例如,更新客户资料图像并删除旧图像
数据库中存储的文件($ customer->图像)
/storage/customers/mhPKW870zGFupAZLI5cwNLoHTAuguCQWoBrDXJCU.jpeg
更新方法
if ($request->file('image')) {
if ($customer->image) {
// get filename
$filename = str_replace('/storage/customers/', '', $customer->image);
// remove old image
unlink(storage_path('app/public/customers/'.$filename));
}
// add new image
$path = Storage::putFile('public/customers', $request->file('image'));
$url = Storage::url($path);
$customer->image = $url;
}
$saveResult = $customer->save();
答案 8 :(得分:0)
对于本地存储使用这个
use Illuminate\Support\Facades\Storage;
Storage::disk('local')->delete('folder_path/file_name.jpg');
对于 S3 存储桶使用这个
use Illuminate\Support\Facades\Storage;
Storage::disk('s3')->delete('folder_path/file_name.jpg');
答案 9 :(得分:0)