Laravel 10 ve Livewire 3 ile DigitalOcean'ın App platformundan CloudFlare'e fotoğraf yüklemeye çalışıyorum. Bunun için bir servis yazdım ve bu servis api'si CloudFlare'nin api dokümanına göre yazıldı. Projem localde sorunsuz çalışıyor ama üretim sunucumda "Dosya Seç" butonuna basıp, dosyayı işaretleyip "Aç" butonuna bastığımda hata veriyor. Konsola baktığımda "Kaynak yüklenemedi: sunucu 401 () durumuyla yanıt verdi" hatasını görüyorum. Bunda sorun ne olabilir ve nasıl çözebilirim? Sorun DigitalOcean'ın "livewire-tmp" dosyası oluşturamamasından diye tahmin ediyorum.
Livewire fotoğraf yükleme
onurzdgn Merhaba,
Laravel'in Trust Proxies ayarını kontrol eder misiniz? Cloudflare ip'lerine ya da yıldız(*) işareti ile tümüne izin verince benzer sorunların giderildiği yazılmış.
Bir deneyin dilerseniz;
https://laravel.com/docs/10.x/requests#configuring-trusted-proxies
- Düzenlendi
onurzdgn Nasıl resim yüklüyorsunuz? Buradaki ile mi (dashboard hariç)? https://developers.cloudflare.com/images/upload-images/
mgsmus
`
public function upload($photo)
{
if ($this->controlApiToken()->getStatusCode() !== 200) {
return response()->json('Cloudflare API key is invalid', 500);
}
// Download photo to Cloudflare
$tmpUrl = $this->createTmpUrl();
if ($tmpUrl === false) {
return response()->json(['error' => 'Temporary URL could not be created'], 500);
}
$client = new Client();
try {
$response = $client->request('POST', $tmpUrl, [
'multipart' => [
[
'name' => 'file',
'contents' => Psr7\Utils::tryFopen($photo->getRealPath(), 'r'),
],
]
]);
// If the request is successful, get the response
$result = json_decode($response->getBody(), true);
$photoId = $result['result']['id'];
return response()->json(['photoId' => $photoId], 200);
} catch (\Exception $e) {
// If the request fails, show the error message
echo $e->getMessage();
return false;
}
}
`
Bu şekilde bir fonksiyon yazdım bu fonksiyondan önce api token geçerli mi diye kontrol ediyorum sonrasında geçici url oluşturuyorum ardından resmi kayıt ediyorum.