Laravel’da Sunucuya Dosya Yükleme

Uzun bi aradan sonra herkese merhabalar arkadaşlar.Bugün Laravel’de sunucuya dosya yüklemeyi görücez.Uzatmadan başlayalım.

İlk başta bir blog kodladığımızı ve blog konusu için resme ihtiyacımız olduğunu düşünelim.bunun için bir Rota bilgisi oluşturuyorum.

App\Http\routes.php dosyasını açalım

Route::get('/konu_ekle','HomeController@konu');
Route::post('/konu_ekle','HomeController@konu_kaydet');

Rotamızı oluşturduktan sonra App\Http\Controller Dizinine gidiyorum ve HomeController’i açıyorum.Ekleme formunun görüntüleneceği HomeController’in konu fonksiyonunu düzenliyoruz.

 function konu(){
 return view('blog.konu_ekle');
}

Resourcez\Views\blog\ klasörüne gidiyoruz ve konu_ekle.blade.php dosyamızı oluşturuyoruz.Formumuz basit bi şekilde tasarlıcam aşağıdaki gibi olsun.

@extends('layouts.app')
@section('content')
 form enctype="multipart/form-data" method="POST" action=""> 
  input type="file"  name="resim" class="form-control">
 

Dikkat etmemiz gereken nokta form enctype=”multipart/form-data” ekliyoruz.Yoksa Dosyayı yükleyemezsiniz.

Daha sonra HomeController@konu_ekle fonksiyonuna gidiyoruz.Normalde POST işlemlerimizi Request ile yapıyorduk.Burdada o şekilde yapıcaz sadece birkaç değişikliğimiz olucak

  if (isset($_FILES["resim"]["name"])) {
                        $dosya  = $request->resim;
                        $kaynak = $_FILES["resim"]["tmp_name"];
                        $dosya  = str_replace(" ", "_", $_FILES["resim"]["name"]);
                        $uzanti = explode(".", $_FILES["resim"]["name"]);
                        $hedef  = "./" . $dosya;
                        if (@$uzanti[1]) {
                            if (!file_exists($hedef)) {
                                $hedef   =  "image/".$dosya;
                                $dosya   = $dosya;
                            }
                            move_uploaded_file($kaynak, $hedef);
                        } else {
                            echo " geçersiz dosya tipi ";
                        }
                    }

PHP de olduğu gibi dosyaları $_FILES ile çekiyoruz.Dikkat etmeniz gereken nokta $_FILES[“buraya formdaki name gelicek”] ben kendi kodlarımda public\image\ klasörüne resmi kaydetmesini istedim kodları çalıştırdığımda resim başarılı bir şekilde yüklenmiş olucak.

Hosting’e Laravel Kurulumu

Merhabalar Arkadaşlar

Öncelikle kendimin karşılaştığı bi problemi sizlerle paylaşıyorum.Laravel ile projeyi geliştridiniz ancak bunu sunucuya attığınız zaman bir takım problemlerle karşılaşıyorsunuz.Bu içerikte bu sorun için .htaccess dosyası paylaşıcam.

Bildiğiniz gibi Laravel default olarak /pulic dizininde çalışmakta.Bu her nekadar güvenlik için güzel bir çözüm olsada kendi sunucusu olmayan paylaşımlı hostinglerde laravel kullanımını zorlaştırmaktadır.Bu konu .htaccess ile aşılabilmektedir.

İlk önce elinizdeki projeyi değişiklik yapmadan sunucunuza atın.Aktarma bittiği zaman siteniz aşağıdaki şekilde olucak

www.site.com

da laravel dosyaları gözükücek.vendors,app, .env gibi yerlere klasör ile erişim var

www.site.com/public

te ise projeniz çalışmakta.Aşağıdaki kodlar ile bir htaccess dosyası oluşturup ana dizine attığınız takdirde bu sorun düzelicektir.

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]
</IfModule>

Oluşturduğunuz htaccess dosyasını ana dizine atın.

Şuanda site.com adresine girdiğiniz zaman direk olarak projenizi görüceksiniz.