[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Carlos Alexandre Gomes
Criador Carlos Alexandre Gomes 28/12/2021

Boa noite, estou usando o laravel 8

estou tendo problemas para carregar imagens no navegador, criei uma API e fiz todas as configurações que você mostra nas aulas :

file system (as imagens estão na pasta usuarios, na raiz do storage fora da empresa)

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

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

estou gerando as url assim  :

http://sis.local/storage/usuarios/75387cf0f80515ff224e638996e23f4e6fb97f9b.jpg

 

Manager Carlos Ferreira 28/12/2021

Olá, Carlos!
Tudo bem?

Os arquivos estão sendo armazenados em storage/app/public/?

Tem o link simbólico chamado storage em public?
ls -la public/

---

No arquivo .env, a variável de ambiente FILESYSTEM_DRIVER está setada para armazenar em public?
FILESYSTEM_DRIVER=public

Carlos Ferreira
Criador Carlos Alexandre Gomes 28/12/2021

Os arquivos estão sendo armazenados em storage/app/public/?

sim, storage/app/public/usuarios

Tem o link simbólico chamado storage em public?

sim, php artisan storage:link

No arquivo .env, a variável de ambiente FILESYSTEM_DRIVER está setada para armazenar em public?

sim, esta como public

ls -la public/

retornou isso, já dei todas as permissoes para  storage :


total 21
drwxr-xr-x 1 Alexandre 197121    0 dez  9 18:26 ./
drwxr-xr-x 1 Alexandre 197121    0 dez 14 15:01 ../
-rw-r--r-- 1 Alexandre 197121  624 nov 24 13:58 .htaccess
-rw-r--r-- 1 Alexandre 197121    0 nov 24 13:58 favicon.ico
-rw-r--r-- 1 Alexandre 197121 1785 nov 24 13:58 index.php
-rw-r--r-- 1 Alexandre 197121   26 nov 24 13:58 robots.txt
drwxr-xr-x 1 Alexandre 197121    0 dez  9 18:26 storage/
-rw-r--r-- 1 Alexandre 197121 1211 nov 24 13:58 web.config

não sei se muda alguma coisa mas estou usando sanctum na minha API e meu laravel esta na versão 8.

Carlos Alexandre Gomes
Manager Carlos Ferreira 28/12/2021

Tem o projeto no GitHub?
Quero ver se passou algo batido no middleware que altera o path de upload.

Carlos Ferreira
Criador Carlos Alexandre Gomes 28/12/2021

git clone https://[email protected]/alexandre-dv/sis.git

Carlos Alexandre Gomes
Manager Carlos Ferreira 28/12/2021

O repositório está privado, não conseguir visualizar.

Carlos Ferreira
Criador Carlos Alexandre Gomes 28/12/2021

Desculpe, esqueci de tirar do privado tente novamente.

Carlos Alexandre Gomes
Manager Carlos Ferreira 28/12/2021

Vamos por partes.

No seu arquivo .env, em FILESYSTEM_DRIVER defina como empresa
FILESYSTEM_DRIVER=empresa

As configurações no arquivo config/filesystems.php estão ok;

No arquivo Kernel.php de definições dos middlewares, defina o middleware EmpresaFileSystems como global, remova ele de routeMiddleware e mova para $middleware (ele precisa ser definido aqui - está aqui o problema)

Após corrigir isso, faça um novo upload de arquivo, e me diga para onde exatamente (qual o path) ele foi enviado.

Carlos Ferreira
Criador Carlos Alexandre Gomes 28/12/2021

Opa, fiz estas alterações, colocando EmpresaFileSystem como global

agora esta dando o erro :

 "message": "Target class [empresa.filesystems] does not exist."

parece que pelo fato de agora estar como global, quando o kernel é carregado na classe EmpresaFileSystem o metodo setFilesystemsRoot é chamado,

e não tem nehuma empresa instanciada.

Carlos Alexandre Gomes
Manager Carlos Ferreira 28/12/2021

Na realidade é para colocar em $middlewareGroups, em web

Carlos Ferreira
Criador Carlos Alexandre Gomes 28/12/2021

Bom dia  fiz igual ao que você pediu

    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            'usuario.permissoes' => \App\Http\Middleware\Autenticar::class,
            //\Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \App\Http\Middleware\Empresa\EmpresaFileSystems::class,
        ],

Parou de dar o erro, porem a foto continua não carregando no navegador, estou tetando carregar por esse link

http://sis.local/storage/usuarios/e172671fa1b4baa0c3d757ec69f5cf9e51c5c591.jpg

Não sei se te informei nas mensagens acima, mas a pasta usuarios que contem as imagens que estou tentando carregar no navegador esta fora da pasta empresas vou tentar mostrar abaixo a estrutura de pastas que estou usando no meu storage :

Diretorios :

Empresas

---  99dcd500-c774-48c3-81cd-2336b831d53b (pasta de uma empresa especifica)

Usuarios

--- imagem_1.jpg

--- imagem_2.jpg

--- imagem_3.jpg

Obrigado.

 

 

 

 

Carlos Alexandre Gomes
Manager Carlos Ferreira 28/12/2021

Está chegando no seu método setFilesystemsRoot do middleware EmpresaFileSystems?

dd($empresa);

---

Me envia esse print desse debug.

---

Qualquer coisa acesso a sua maquina e te ajudo a matar esse problema.

Carlos Ferreira
Manager Carlos Ferreira 28/12/2021

 Não esqueça amigo, quando corrigir isso, cadastre uma nova imagem, porque só assim vai conseguir validar se pegou as mudanças do middleware.

Carlos Ferreira
Criador Carlos Alexandre Gomes 28/12/2021

Boa noite!

não estava carregando o middleware EmpresaFileSystems depois que coloquei eleem  $middlewareGroups não estava aparecendo nenhum erro porque eu removi do routeServiceProvider o middleware EmpresaFileSystems

então coloquei ele novamente no routeServiceProvider

    public function boot()
    {
        $this->configureRateLimiting();

        $this->routes(function () {
            Route::prefix('api')
                ->middleware(['api','empresa.filesystems'])
                ->namespace($this->namespace)
                ->group(base_path('routes/api.php'));

            Route::middleware(['web','empresa.filesystems'])
                ->namespace($this->namespace)
                ->group(base_path('routes/web.php'));
        });
    }

Porem  agora voltou a dar o mesmo erro "message": "Target class [empresa.filesystems] does not exist."

acho que este erro esta ocorrendo quando eu coloco empresa.filesystems no routeServiceProvider, porque nem chega a carregar a classe EmpresaFileSystems para eu poder debugar

 

Carlos Alexandre Gomes
Manager Carlos Ferreira 28/12/2021

Nos providers não vai dar certo, porque esse middleware precisa do middleware web (por conta de sessão e etc)

Faz o seguitne amigo, me envia um e-mail ([email protected]) e vamos combinar um acesso remoto, vai ser mais rápido para mim te ajudar dessa forma do que rodar o seu projeto aqui e debugar ele.

No aguardo.

Carlos Ferreira
Criador Carlos Alexandre Gomes 28/12/2021

Boa noite, Já te enviei um email!

Carlos Alexandre Gomes
Manager Carlos Ferreira 28/12/2021

ok! :)

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!