Curl
Estou tentando fazer update de uma imagem usando curl, mais sem sucesso, pode me ajudar a identificar o erro?
public function update(Request $request, $id)
{
$imagem = new \CURLFile($request->imagem);
$data = [
'user_id' => 1,
'codigo' => $request->codigo,
'nome' => $request->nome,
'price' => str_replace(',','.', $request->price),
'data' => date('Y-m-d'),
'imagem' => new \CURLFile($request->imagem)
];
//dd($imagem);
$token = $this->token;
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_URL => 'http://127.0.0.1:8000/api/produtos/'.$id,
CURLOPT_POSTFIELDS => "codigo=" . $request->codigo . "&nome=" . $request->nome . "&price=" .$request->price. "&imagem" .json_encode($imagem),
//CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer" .$token->token
],
]);
$update = curl_exec($curl);
curl_close($curl);
if($update)//true ou false
return redirect()->route('produtos.index')
->with(['success' => 'Atualizado com sucesso!']);
return redirect()->route('produtos.index')
->with(['error' => 'Não foi possivel Cadastrar']);
}
Olá, Renato!
Tudo bem?
Primeiro uma dica amigo, usa ServiceLayer para organizar o seu código, e deixar o controller mais enxuto (veja o curso do LaraFood <- recomendo)
Agora sobre o erro, vou precisar de mais detalhes.
Teve erro? Qual? (print: https://pt-br.imgbb.com/)
Essa requisição chegou na outra API?
Justamente a imagem parece não chegar, não dá erro mais não salva a imagem na pasta produtos e salva no BD no campo imagem informações que desconheço, vou enviar imagem de como está salvando
Envie uma imagem mostrando como esta chegando no BD ao atualizar
https://ibb.co/DpYqtMm
Codigo atualizado no Model
codigo no Controller
Lá onde faz o upload está errado (ou recebendo os dados errados, sem validar)
Tem os códigos no GitHub?
E por que não usa algo mais simples, como o Guzzle, ou ainda melhor o próprio http do Laravel?
Veja como é simples amigo, enviar arquivos em uma request http no Laravel: https://laravel.com/docs/8.x/http-client#sending-a-raw-request-body
Se tiver alguma dúvida como implementar o Http do Laravel, eu te ajudo, conta comigo amigo.
Obrigado pelo retorno Carlos, estou indo por partes e gostaria muito que me ajudasse a entender essa lógica do put no Curl, qdo faço pelo postman tudo da certo cadastro, update, delete, mais qdo tento consumir não consigo fazer o upload para o update, apenos consigo cadastrar e detar, é a nível de aprendizado mesmo, depois vou partir pro guzzle, vc consegue me ajudar nessa? Pois não sei mais o que fazer
Não tenho o cód no git nem sei usar corretamente ainda e nem tenho cadastro
Trabalhar com o Git é algo muito importante, nessa aula falo sobre o Git + GitHub:
https://academy.especializati.com.br/aula/versionamento-de-codigo-com-git
-----
Por que o seu código CURL não está funcionando?
Embora esteja enviando o file, está pegando o dado da request, você pode salvar o arquivo local e enviar ele via CURL (ou melhor, com o Guzzle, ou melhor ainda com o Http do Laravel)
"Por que o seu código CURL não está funcionando?
Embora esteja enviando o file, está pegando o dado da request, você pode salvar o arquivo local e enviar ele via CURL (ou melhor, com o Guzzle, ou melhor ainda com o Http do Laravel)"
Ok, mais tem como vc me auxiliar nisso? é muito importante para meu aprendizado, estou de fato querendo aprender de verdade a programar, mais queria muito saber fazer isso usando o PUT do curl, ja pesquisei mais não achei nada na internet!! te agradeceria muito se me ajudasse a entender
Vamos passo por passo, beleza?
0º Colocar os projetos no GitHub, porque fica mais fácil para mim te ajudar (https://academy.especializati.com.br/aula/versionamento-de-codigo-com-gi)
1º Receber o arquivo no projeto local, e salvar;
2º Enviar o arquivo local para o projeto
----
Vamos agora resolver o passo 0 e 1.
No passo 1 você recebe o arquivo no seu projeto, e faz o upload dele (observer o método store):
https://github.com/especializati/curso-laravel-8/blob/master/app/Http/Controllers/PostController.php
Blz Carlos vou estudar o Github e colocar os arquivos, porém a API está funcionando corretamente, ao testar pelo Postman, cadastra e faz o upload sem problemas, porém ao tentar consumir usando Laravel e Curl, consigo recuperar os dados, cadastrar sem problemas e ao fazer update somente a imagem não tenho sucesso, então acredito que já podemos destacar a possibilidade de erro da Api...mais vou incluir no github
Pra mim que estou por fora do projeto e tendo acesso a pequenas partes fica mais difícil te ajudar como você merece. Por isso o GitHug é útil, porque vai me dar uma visão geral do seu projeto.
Esse projeto mesmo, que está tentando enviar a imagem, ele é um gateway?
Digo, ele recebe o arquivo e já envia para outra API?
Blz Carlos, segue o git(s) pra vc me ajudar a entender porque não faz update da imagem com o Curl o cadastro esta ok
Api:
https://github.com/renatoribeiromachado/apiProdutos
Consumir essa API
https://github.com/renatoribeiromachado/consumirApiCurl
Te enviei um e-mail, agendando um dia para gerar um exemplo prático e real dentro do que você já tem.
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!