Laravel Storage Kullanımı -1-

Laravel Storage Kullanımı -1-

Hepinize merhaba dostlarım 😊. 1 haftalık bir aradan sonra kaldığımız yerden devam etmeyi gerçekten çok özledim ki siz de özlediniz bunu biliyorum farkındayım 😊. Arayıp soranlar hatta bloğu bıraktın mı diyen dostlarım bile oldu bu kadar düşündüğünüz için gerçekten teşekkür ederim mutlu ediyorsunuz beni 😊.

Yine çenemin düştüğünün farkındayım dostlarım mutlu olunca genelde böyle oluyorum biliyorsunuz her neyse daha da uzatmadan konumuza giriş yapalım diyorum 😅

Dostlarım bundan yaklaşık 2 hafta önce bir önceki yazımda "(Plesk Panel Kurulumu (Link Burada))" sizlere gelecek hafta "Laravel Üzerinde Storage Kullanımı" konusundan bahsedeceğimi söylemiştim. Lakin beni sık takip edenler bilir araya internet kesintisi girdi vs girdi falan filan 😅. Ama çok şükür bu pazar bu konuyu rahatça göreceğiz 😊. İçinizden şunu diyorsunuz ben seziyorum şu an

  Hocam bu storage kullanımı tam olarak nedir yani neden ihtiyaç duyarız ve kullanımı zor mu kafamız karışık 

İşte beklediğim soru bunlar dostlarım. Benim de zamanında kafama takılan konuydu kendisi ve size bunu şu şekilde açıklamak istiyorum

  • Bu konuyu karmaşıklık olmaması ve uzun olmaması adına 3 seri olarak yazacağım
  • Mantığı basit hiç karmaşa yapı var diye gözünüzü korkutmayın
  • Zaten bu yazıda önce temelinden ve neden kullanıldığından bahsedip ufak bir upload işlemi gerçekleştireceğiz 😊

şeklinde size açıklama yapabilirim dostlarım 😊. O halde gelin daha fazla geç kalmadan neymiş ne değilmiş bu storage yapısı bunun üzerine bir konuşalım 😊

Nedir Bu Storage ?

Eveeeet geldik artık Laravel in vazgeçilmezlerinden birisine daha. Benim bile aşık olduğum bu yapı yani Storage neymiş ne değilmiş inceleyelim diyorum 😊

Dostlarım Storage yapısına genel bir bakacak olursak bizim projemiz içerisndeki dosyaların (resim, pdf dosyaları vb.) tutulduğu, bizin iznimiz doğrultusunda dışarıdan erişilip erişilemeyeceğini belirttiğimiz, uygulama içerisinde hata olduğunda hataların log dosyasında tutulduğu bir yapıdır. Yani bizim core php ile yaptığımız sistemlerde nasıl bir klasör oluşturup içerisinde resim,dosya vb. verileri tutuyorsak laravelde de Storage klasörü altında bu işlemleri gerçekleştiriyoruz. Şimdi sizin aklınıza şu gelecektir

Hocam bazı projelerde karşımıza çıkıyor yazan yazılımcı arkadaş public dizini içerisinde tutuyor bu doğru bir yaklaşım mıdır ?

Beklediğim soru geldi dostlarım 😊. Bu da farklı bir yöntemdir. Yani storage ile sembolik link oluşturmaktansa oraya atıp oradan çekebilirim der yazılımcı o da kullanılabilir. Tamamen yazılımcının tercihi diyebilirim 😊

Aynı zamanda size şunu da belirtmek istiyorum dostlarım eğer storage yapısı ile çalışıyorsanız ve github a projenizi yedekliyorsanız bu Storage klasörü github a gönderilmiyor bilginiz olsun. Bunu da ayarlamak için .gitignore dosyasından değişiklik yapmanız gerekmektedir ama bu şekilde ayar yapılmasını sektörde hiç görmedim 😊.

Artık Storage nedir ne değildir kısmını kavradığımıza göre dostlarım gelin ufak bir upload işlemi gerçekleştirelim 😊

Storage Yapısını Kullanalım

Eveeeet dostlarım artık gelelim bu Storage yapısını kullanmaya 😊. Öncelikle hemen Laravel proje çatımızı kuralım ki bunu artık siz de biliyorsunuz 😊. Bu proje çatımızı kurduktan sonra ise hemen .env dosyamıza gelip

BROADCAST_DRIVER=log
CACHE_DRIVER=file
FILESYSTEM_DRIVER=public   // burası 'local' olarak geliyordu public yapalım
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

şeklinde ayarlama kısmını gerceklestirelim. Sadece yorum satırı olan kısmı bu şekilde ayarlayalım ama 😊. Şimdi içinizden şunu diyorsunuz

Hocam bunu ayarladık ama dışarıya izin verdik gibi oldu biraz kafamız karıştı. Bunu neden yaptık ?

Hemen açıklıyorum dostlarım 😊. Şimdi bir içerik yazdınız varsayalım ve bu içerikte de resim veya pdf dosyası gibi bir dosya kullandınız. Ziyaretçinin bu pdf dosyasını veya resim dosyasını görebilmesi için bu ayarı yapmamız gerkemektedir. Aksi halde kırık resim şeklinde sayfada görünür ve kullanıcı bunu ne görebilir ne de indirebilir 😊.

Bu kısma kadar tamam ise dostlarım kurmuş olduğumuz Laravel çatımız üzerinde ufak bir form oluşturalım. Bunun için ekstra bir controller oluşturmayalım. Sadece routes/web.php üzerinden bir adet form ve bir de upload işlemini yöneteceğim rotamız olsun. Hemen routes/web.php dosyasına gelip

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    echo "<form method='post' action='/upload' enctype='multipart/form-data'>".csrf_field()."
        <input type='file' name='file'>
        <br><br>
        <button type='submit'>Resim Yükle</button>
</form>";
});

şeklinde kodlarımızı yazdık dostlarım. Bu kısımdan anlaşılacağı üzere bir upload formu ayarladık. Terminalimize gelip

php artisan serve

komutumuzu yazdıktan sonra ekranımıza gelen çıktı

şeklinde olacaktır. Bu kısma kadar tamamız dostlarım. Şimdi ise gelelim upload işlemlerimizi yazmaya 😊.

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    echo "<form method='post' action='/upload' enctype='multipart/form-data'>".csrf_field()."
        <input type='file' name='file'>
        <br><br>
        <button type='submit'>Resim Yükle</button>
</form>";
});

/** UPLOAD İŞLEMLERİ **/
Route::post('/upload',function (\Illuminate\Http\Request $request){
    $file = $request->file('file');  // ınputtaki name ne ise onu yazıp dosyayı aldık
    $file_name = "mfsoftware-".time().".".$file->getClientOriginalExtension();  // dosyamızın ismini değiştirdik ve uzantısını aldık
    $file->storeAs("mfsoftware",$file_name);  //---> storage/app/public içerisinde 'mfsoftware' ismind bir klasör oluşturduk ve içerisine dosyamızı aktardık
});

şeklinde kodlarımızı yazdık dostlarım 😊. Projeyi çalıştırdğımızda herhangi bir resim seçip yükle butonuna basalım. Örnek olarak ben MFSoftware Blog logosunu seçtim ve Yükle butonuna bastım. Proje ana dizininde storage klasörünün altında  

şeklinde karşımıza çıktı gelecektir e bingoooo 💯. Uygulamamız başarılı bir şekilde çalışıyor 😊.

Eveeeet dostlarım 😊. Bu yazımda elimden geldiğince dilim döndüğünce "Laravel Storage Kullanımı" konusunu anlatmaya çalıştım. Umarım faydalı olmuşumdur. EKsik veya hatalı bir anlatım yapmış isem benimle iletişime geçmekten çekinmeyin 😊. Konu başlarda biraz karmaşık veya zor olabilir dostlarım anlıyorum. Bu aşamada sizlerden yapmanızı istediğim tek şey her yazımda da dediğim gibi "İstikrarlı ve azimli olmalısınız, bolca pratik yapmalısınız 😊". Bu dediklerimi hayat felsefeniz yaptığınız sürece başarı sizler için kaçınılmaz olacaktır 😊

Yazımın başlarında dediğim gibi storage kullanımını 3 seri olarak yayınlayacağım dostlarım bilginiz olsun 😊

Aynı zamanda 25 Aralık 2022 de kurmuş olduğum seyyaryazilimci.com soru cevap sitesi de yayında dostlarım haberiniz olsun. Her zaman dediğim gibi sorular ve cevaplar belirli bir süre admin onayından geçerek sistem üzerinde yayınlanmaktadır dostlarım bilginiz olsun.

Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim 😊

 

Muhammed Fatih BAĞCIVAN
Yazar Hakkında

Kendi Halinde Bir Backend Developer

Önceki YazıPlesk Panel Üzerinde Laravel Kurulumu
Sonraki YazıVue.js Data Binding İşlemi
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz