web-dev-qa-db-fra.com

Laravel 5.4: comment supprimer un fichier stocké dans le stockage / l'application

Je souhaite supprimer un fichier stocké dans storage/app/myfolder/file.jpg. J'ai essayé les codes suivants mais rien de tout cela ne fonctionne:

use File    
$file_path = url().'/storage/app/jobseekers_cvs/'.$filename;
unlink($file_path);

et

use File
$file_path = public_path().'/storage/app/myfolder/'.$filename;
unlink($file_path);

et

use File
$file_path = app_path().'/storage/app/myfolder/'.$filename;
unlink($file_path);

et aussi,

File::Delete('/storage/app/myfolder/'.$filename);

Veuillez aider.

13
Ajmal Razeel

Vous pouvez soit utiliser la façade Laravels Storage comme ceci:

Storage::delete($file);

ou vous pouvez utiliser ceci:

unlink(storage_path('app/folder/'.$file));

Si vous souhaitez supprimer un répertoire, vous pouvez utiliser ceci:

rmdir(storage_path('app/folder/'.$folder);

Une partie importante à mentionner est que vous devez d'abord vérifier si le fichier ou le répertoire existe ou non.

Donc, si vous souhaitez supprimer un fichier, vous devriez probablement le faire:

if(is_file($file))
{
    // 1. possibility
    Storage::delete($file);
    // 2. possibility
    unlink(storage_path('app/folder/'.$file));
}
else
{
    echo "File does not exist";
}

Et si vous voulez vérifier s'il s'agit d'un répertoire, procédez comme suit:

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";
}
24
utdev

Utilisez stockage

//demo 
use Illuminate\Support\Facades\Storage;

Storage::delete($filename);
5
Minar Mnr

J'ai trouvé la réponse. Ce code a fonctionné pour moi.

unlink(storage_path('app/foldername/'.$filename));
4
Ajmal Razeel

La méthode delete accepte un seul nom de fichier ou un tableau de fichiers à supprimer du disque:

use Illuminate\Support\Facades\Storage;

Storage::delete('file.jpg');

Storage::delete(['file.jpg', 'file2.jpg']);

Si nécessaire, vous pouvez spécifier le disque sur lequel le fichier doit être supprimé:

use Illuminate\Support\Facades\Storage;

Storage::disk('s3')->delete('folder_path/file_name.jpg');

Supprimer un répertoire

Enfin, la méthode deleteDirectory peut être utilisée pour supprimer un répertoire et tous ses fichiers:

Storage::deleteDirectory($directory);
0
Mateus Gonçalves

Ce code a fonctionné pour moi.

use Illuminate\Support\Facades\Storage;
....
$storagePath  = Storage::disk('local')->getDriver()->getAdapter()->getPathPrefix();
if(file_exists($storagePath.$file)) unlink($storagePath.$file);
0
jamel nefzi