Как удалить несколько изображений в public / folder при обновлении в laravel? - PullRequest
0 голосов
/ 13 ноября 2018

Я сохраняю несколько изображений, используя массив в базе данных. например. img.jpg,img1.jpg,img2.jpg это мой код.

$this->validate($request,[
        'listing_id' => 'required',
        'images.*' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        'description' => 'required',
        'features' => 'required',
        'make' => 'required',
    ]);

    $vehicles = vehicle::find($id);
    $input=$request->all();
    $images=array();
    if($files=$request->File('images')){
        foreach($files as $file){
            $name=date('mdYHis').uniqid().'.'.$file->getClientOriginalExtension();
            $file->move('uploaded-images',$name);
            $images[]=$name;
            $vehicles->images = implode(",",$images);
        }
    }else{

        $vehicles->images = $request->images_dummy;

    }

Я хочу удалить файл изображения в public/uploaded-images. я нашел это Как удалить изображения из общедоступной папки / папки изображений в laravel 5 (URL-данные) , но в моем коде это не работает.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вы должны попробовать это:

use File;

$images = explode(",", $vehicles->images);

foreach($images as $image){

   $image_path = public_path().'/images/'.$image;

   if(File::exists($image_path)) {
    File::delete($image_path);
   }
}
0 голосов
/ 13 ноября 2018

Поскольку вы сохраняете изображения в виде списка, разделенного запятыми, вам просто нужно разобрать строку (которая создает массив) и затем зациклить ее, чтобы удалить изображения.

Что-то вроде этого должно работать:

use Illuminate\Support\Facades\Storage;

$images = explode(",", $vehicles->images);

foreach ($image as $images) {
    Storage::delete("uploaded-images/{$image}");
}

Если вы изменили свой код, чтобы сохранить имена изображений в качестве фактического пути к изображению (т. Е. uploaded-images/img.jpg,uploaded-images/img1.jpg, то вы могли бы изменить это, но сделать это проще:

use Illuminate\Support\Facades\Storage;

$images = explode(",", $vehicles->images);
Storage::delete($iamges);

Оба эти примера можно найти в документах Laravel .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...