URL da imagem nao carrega no navegador
[Concluído]
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)
estou gerando as url assim :
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
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.
Tem o projeto no GitHub?
Quero ver se passou algo batido no middleware que altera o path de upload.
git clone https://[email protected]/alexandre-dv/sis.git
O repositório está privado, não conseguir visualizar.
Desculpe, esqueci de tirar do privado tente novamente.
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.
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.
Na realidade é para colocar em $middlewareGroups, em web
Bom dia fiz igual ao que você pediu
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.
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.
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.
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
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
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.
Boa noite, Já te enviei um email!
ok! :)
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!