Upload de arquivos - Curso: Laravel 8
[Finalizado Pelo Aluno]
Carlos, boa tarde!
Na aula 16 estou encontrando a mensagem de erro:GET http://lara-repositories.test/storage/app/posts/teste-foto1.JPG 404 (Not Found)
O que eu já verifiquei:
01) NOme no banco de Dados:posts/teste-foto1.JPG;
02) URL da foto no browser: <img src="http://lara-repositories.test/storage/app/posts/teste-foto1.JPG" alt="Teste Foto1" style="max-width=100px;">;
03) URL no Visual Studio Code: Projects/Docker/cursos/lara-repositories/storage/app/posts/teste-foto1.JPG;
04) Revisei o código várias vezes tendo como referência a aula.
Abaixo segue o código da página index.
Desde já agradeço a ajuda.
Att
Marcelo
Carlos, só complementando, após eu digitar no terminal o comando: ll public/ o terminal mostrou o caminho abaixo.
/var/www/cursos/lara-repositories/storage/app/public/
Att
Marcelo
Olá, Marcelo!
Tudo bem?
Os seus arquivos estão sendo upados para storage/app/ e não para storage/app/public/ como deveria ser.
No seu arquivo .env mude o valor da variável de ambiente FILESYSTEM_DRIVER para public:
FILESYSTEM_DRIVER=public
Após isso, repita o processo de upload que vai dar certo, vai mover os arquivos para o diretório correto.
Depois na view, faça:
{{ url("storage/{$post->image}") }}
Carlos,
eu já tinha configurado a variável FILESYSTEM_DRIVER=public no meu arquivo .env, apenas alterei a view conforme você sugeriu e fiz upload da imagem novamente, porém, não funcionou!
Deletei a pasta app e no terminal criei um novo link através do comando: 'php artisan storage:link' e ele recriou a pasta app\posts e depois fiz um 'll public/', segue a saída abaixo.
lrwxrwxrwx 1 laradock root 52 Nov 6 00:03 storage -> /var/www/cursos/lara-repositories/storage/app/public
A única observação é que ficou com a linha em vermelho, porém, as imagens são salvas na pasta, só não carregam na página devido ao erro 404.
segue meu index atualizado.
Mensagem no console do browser:
GET http://lara-repositories.test/storage/posts/teste-foto.png 404 (Not Found)
Como o elemento img é carregado no Browser.
<img src="http://lara-repositories.test/storage/posts/teste-foto.png" alt="Teste Foto" style="max-width=100px;">
Path da foto 'teste-foto.png' no VSC
lara-repositories/storage/app/posts/teste-foto.png
Desde já agradeço a ajuda.
Att
Marcelo
Observação:
Já limpei o cache.
php artisan cache:clear
php artisan route:cache
php artisan config:clear
php artisan view:clear
Infelizmente não resolveu.
Att
Marcelo
O seu link sombólico está correto.
A foto ainda está no path antigo: storage/app/posts/teste-foto.png
Quando mudou a variável de ambiente FILESYSTEM_DRIVER, você fez um novo upload?
Porque essse arquivo deve estar em storage/app/public/posts/teste-foto.png
Carlos, bom dia!
Deletei a pasta storage e recriei a mesma, depois criei o link simbólico e carregou as imagens, porém quando inseri outra foto foi criado a pasta posts fora da public novamente!
storage->app->posts->imagem.jpg (Quando crio um novo post a imagem vai para esta pasta e não é carregada)
storage->app->public->posts->imagem.jpg (Quando arrasto as imagens para esta pasta ela é carregada)
Resumindo, o problema ocorre no momento de armazenar a imagem, o sistema cria a pasta posts, caso não exista a mesma, logo abaixo de app (fora da pasta public) e insere a imagem.
Segue o código.
StoreUpdatePost
Att
Marcelo
Carlos,
consultando a documentação do laravel resolvi alterar o código abaixo de:
para:
E o problema foi resolvido, porém, queria entender se esta alteração é a forma 'correta' para resolver o problema? Pois na aula não consta o parâmetro 'public' e funcionou!! Por quê????
Obrigado.
Att
Marcelo
Quando fez isso forçou o upload para o drive public:
$image = $request->image->storeAs('posts', $nameFile, 'public');
O arquivo .env não armazena cache, portanto, como você mudou para isso, as configuraçõess estavam certas:
FILESYSTEM_DRIVER=public
A única explicação é cache no arquivo de config, experimenta deletar em bootstrap/cache/
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!