Storage :: Удалить местоположение пути не переопределено - PullRequest
0 голосов
/ 26 сентября 2018

[введите описание изображения здесь] [1] не так ли?но это не удаление изображения, хотя оно хранит изображение

, если это не так, то как я могу переопределить публичный путь в контроллере?

отредактировано (как предложено): я добавилновый диск "public" в моем filesystem.php и контроллер, модифицированный путем добавления фасада Storage.


в моем controller.php

public function update(Request $request, $userId)
{
    $oldFileName='';
    $filenameToStore='';
    //saving the user
    $user=User::find($userId);
    $user->first_name = $request->input('first_name');

    //for the image
    if ($request->hasFile('user_image')) {
        $image = $request->file('user_image');

        //get filename
        $filenameToStore= $image->getClientOriginalName();

       $location = public_path('chbea/users/images/' .$filenameToStore);

        Image::make($image)->save($location);
        $oldFileName =$user->user_image;

        Storage::disk('public')->delete('chbea/users/images/'. 
        $oldFileName);

        //saving user image name
        $user->user_image = $filenameToStore;
    }

    $user->save();
    Session::flash('success', 'The Student Details was Updated!');
    return redirect()->route('students.index');


}

в моем filesystems.php

<?php

return [


'default' => env('FILESYSTEM_DRIVER', 'local'),


'cloud' => env('FILESYSTEM_CLOUD', 's3'),


'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => public_path('images/'),
    ],

    'public' => [
        'driver' => 'local',
        'root' => public_path(),
    ],

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

    's3' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
        'url' => env('AWS_URL'),
    ],

  ],

 ];

и когда я получаю вывод, путь не является намеченным.

dd(Storage::disk('public'), 
  Storage::disk('public')>path('chbea/users/images/'.$oldFileName),
  Storage::disk('public')->exists('chbea/users/images/'.$oldFileName)
 [enter image description here][1]);

Вот вывод https://i.stack.imgur.com/euVWR.png

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

так что это сработало окончательно ......

$oldFileName =$user->user_image;  
Storage::disk('customDisk')->delete('chbea/users/images/' . $oldFileName);

и в моих файловых системах.php

 'customDisk' => [
        'driver' => 'local',
        'root' => public_path(),
 ],

и самое главное - запустить эту команду, иначе вы получитеошибка драйвера не поддерживается

  php artisan config:cache
0 голосов
/ 26 сентября 2018

Таким образом, проблема в том, что когда вы настраиваете файловую систему, как у вас в конфигурации filesystems.php, она заключает в тюрьму эту файловую систему по указанному вами пути.Так что в вашем случае ваша local файловая система заключена в тюрьму public_path('allimages/').Вы не можете использовать этот диск для выхода за пределы этой файловой системы.

Вы можете создать другой диск, который будет заключен в тюрьму в другом месте, хотя:

'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => public_path('allimages/'),
    ],

    'public' => [
        'driver' => 'local',
        'root' => public_path()
    ],

Здесь я создал еще один диск с именем public и заключил этот диск в открытый доступ.Затем вы можете использовать фасад хранилища следующим образом:

Storage::disk('public')->delete('project/users/images/' . $oldFileName);

Это удалит файл, указанный по указанному вами пути относительно корня диска public.

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