Невозможно удалить файл, хранящийся в хранилище - PullRequest
0 голосов
/ 06 августа 2020

застрял при удалении файла, который я сохраняю в каталоге хранилища. Мои confs, как показано ниже.

config / filesystems

'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],

вот как я сохраняю изображение.

if ($request->hasFile('image'))
    {
        $image = $request->file('image');
        Storage::disk('public')->put("/uploads/".$image->hashName(),  File::get($image));
        $input['image'] = 'uploads/' . $image->hashName();
    }

Я использую Laravel 7 и изображение успешно загружается, может ли кто-нибудь предложить мне лучший способ удалить файлы, хранящиеся в нем.

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Вы можете сохранить изображение с помощью:

if(request('image'))
{
     $table_column_name = request('image')->hashName();
     request('image')->store('public/uploads/');
}

Вы можете удалить изображение с помощью:

$data = MODAL_NAME::findOrFail($id);
Storage::delete('public/uploads/'.$data->image);
1 голос
/ 06 августа 2020

Если вы хотите, чтобы Laravel автоматически управлял потоковой передачей данного файла в ваше хранилище, вы можете использовать метод putFile или putFileAs. Этот метод принимает экземпляр Illuminate\Http\File или Illuminate\Http\UploadedFile и автоматически передает файл в желаемое место:

use Illuminate\Http\File;
use Illuminate\Support\Facades\Storage;

// Automatically generate a unique ID for file name...
Storage::putFile('photos', new File('/path/to/photo'));

// Manually specify a file name...
Storage::putFileAs('photos', new File('/path/to/photo'), 'photo.jpg');

Следует отметить несколько важных моментов, касающихся метода putFile. Обратите внимание, что мы указали только имя каталога, а не имя файла. По умолчанию метод putFile генерирует уникальный идентификатор, который будет служить именем файла. Итак, в вашем случае вам не нужно использовать $image->hasName().

putFile() также возвращает путь, по которому был сохранен файл. Итак ...

$path = Storage::putFile('photos', new File('/path/to/photo'));
//To delete it
Storage::delete($path);
...