Dosyaları PHP ve MySQL ile BLOB alanlarında saklayın

İçindekiler

Dosyaları kullanan bir yazılım veya web sitesi oluşturduğumuzda, onları nasıl depolayacağımıza karar vermeliyiz, olasılıklardan biri bir klasör oluşturup dosyaları orada depolamak ve bir başka olasılık da onları veritabanında saklamaktır, aklımızda tutmalıyız. bu bir alan uzun blob 4 gigabayta kadar depolayabilir.

MySQL veritabanı motoru, bilgileri ikili biçimde depolayan blok alanları kullanmanıza olanak tanır. Bu biçim, Word, Excel, her tür resim, pdf dosyası vb. gibi çeşitli dosya türlerini saklamanıza olanak tanır. Bu eğitimde göreceğiz MySQL veritabanı tablosunda dosyalar nasıl saklanır, veriler bir html formundan gönderilecek ve dosyaları veritabanına kaydetmek için PHP ile işlenecektir.

Öğretici örneklerini gerçekleştirmek için, öğreticide gördüğümüz gibi kurulabilecek bir uzak sunucuya veya yerel bir sunucuya ihtiyacımız olacak:

  • Bilgisayarınızı bir web sunucusuna dönüştürmek için Xampp nasıl kurulur, bu şekilde php ve mysql desteğine ve gerekli tüm kütüphanelere sahip olacağız.

Daha sonra, fotoğraf ve pdf teknik sayfası ile araç verilerini depolayacak veritabanını oluşturacağız, bunun için oluşturacağımız phpmyadmin bir satıcı olarak adlandırılacak örnek. Daha sonra arabalar tablosunu oluşturacağız.

 VERİTABANI OLUŞTUR bayisi; `autos` tablosu için tablo yapısı CREATE TABLE` autos` (`id` int (11) NOT NULL,` mark` varchar (150) DEFAULT '0', `model' varchar (150) DEFAULT '0',` photo` longblob) MOTOR = InnoDB DEFAULT CHARSET = latin1; `autos` ALTER TABLE` autos` tablosunun indeksleri ADD PRIMARY KEY (`id`); Dökülen tabloların AUTO_INCREMENT'i 'autos' tablosunun AUTO_INCREMENT'i ALTER TABLE' autos' MODIFY 'id' int (11) NOT NULL AUTO_INCREMENT;
Tablo oluşturma kodu

Veri kaydı için PHP sayfaları ve formu oluşturuyoruz
Sonra bir config.php dosyası oluşturacağız veritabanına nereden bağlanacağız:

 
config.php

Daha sonra, autos tablosunun tüm kayıtlarını listelemekten sorumlu olacak PHP'de bir sayfa oluşturacağız.

 <? attı"
"; attı"
"; attı""; attı""; attı""; attı""; attı"

"; $ sonuç = mysql_query (" SELECT * FROM `autos`") veya trigger_error (mysql_error ()); while ($ satır = mysql_fetch_array ($ sonuç)) {foreach ($ satır AS $ anahtar => $ değer) {$ satırlar [$ anahtar] = eğik çizgiler ($ değer);} echo "
"; attı""; attı""; attı""; attı" "; attı"

"; } attı"
MarkamodeliFotoğrafHareketler
". $ satır ['işaret']."". $ satır ['model']." Fotoğrafı gösterDüzenlemek Kaldırmak
"; echo" Yeni araba ";?> var13 ->
Tablodaki tüm kayıtları listele

Bir fotoğrafı kaydetmemize izin veren verileri kaydetme formu, bunun için tarayıcıdan bir dosya seçmemize ve ardından PHP ile işlememize ve verileri autos tablomuzun blob alanlarına kaydetmemize izin veren dosya öğelerini kullanmalıyız. veritabanı.

Sunucumuzda webin oluşturulması
Web'i sunucumuzda imtiyaz adı verilen bir klasör içerisinde oluşturuyoruz. Web sayfası, özniteliği kullanmamız gereken biçimde HTML ve PHP kodunu içerecektir. enctype = "çok parçalı / form verisi" bu, dosyaların form aracılığıyla gönderilebileceğini gösterir, özniteliği yoksa dosyalar gönderilemez.

Bu sayfa çağrılacak yüksek.php

Kod aşağıdaki gibidir:

 $ değeri) {$ _POST [$ anahtarı] = mysql_real_escape_string ($ değeri); } // fotoğraftan veri okuyoruz $ photo = $ _FILES ["foto"] ["tmp_name"]; $ fotoğrafadı = $ _FILES ["fotoğraf"] ["ad"]; // blob alanına ekleyeceğimiz dosya bu $ foto = $ _FILES ['foto'] ['tmp_name']; // kaydetmeden önce ikiliye çeviriyoruz $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["fotoğraf"] ["tmp_name"])); $ sql = "INSERT INTO` arabalar` (`make`,` model`, `fotoğraf`) DEĞERLER ('{$ _POST [' marka ']}', '{$ _POST [' model ']}', '$ Fotoğraf' ) "; mysql_query ($ sql) veya die (mysql_error()); başlık ('Konum: Listautos.php'); }?> var13 ->

Marka:

modeli:

Fotoğraf:

Daha sonra bunun için göstermemiz gerekecek, ikili dosyayı yorumlayan ve gösteren bir sayfa oluşturacağız, sayfayı oluşturacağız verfoto.php ve gösterilecek fotoğrafın kimliğini belirteceğiz.
 Başlıksız Belge

Ayrıca aşağıdaki şekilde ihtiyacımız olursa dosyanın özniteliklerini de çıkarabiliriz:

 
Dosya işlem sırasında geçici olarak bellekte saklanır, bir hata oluşursa veriler kaybolabilir veya tamamen kaydedilmeyebilir, PHP betiği, işlem tamamlandıktan sonra doğru şekilde bitmese bile geçici dosyayı bellekten kaldırır.

Ardından, aradığımız bir arabanın verilerini düzenlemek için sayfa oluşturacağız. edit.php

 $ değeri) {$ _POST [$ anahtarı] = mysql_real_escape_string ($ değeri); } // fotoğraftan veri okuyoruz $ fotoğraf = $ _FILES ["foto"] ["tmp_name"]; $ fotoğrafadı = $ _FILES ["fotoğraf"] ["ad"]; // bu geçici dosyadır $ photo = $ _FILES ['foto'] ['tmp_name']; // geçici dosyayı ikili dosyada oku $ photo = mysql_real_escape_string (file_get_contents ($ _ FILES ["fotoğraf"] ["tmp_name"])); $ sql = "UPDATE` arabalar` SET `brand` = '{$ _POST [' marka ']}',` model` = '{$ _POST [' model ']}', `photo` = '$ fotoğraf' NEREDE `id` = '$ id'"; mysql_query ($ sql) veya die (mysql_error()); başlık ('Konum: Listautos.php'); } $ satırlar = mysql_fetch_array (mysql_query ("SELECT * FROM` autos` WHERE `id` = '$ id'")); ?> var13 ->

Marka:

modeli:

modeli:

Fotoğraf:

>

Bir kaydı silersek, dosyaları aynı anda sileceğimizi ve bunların kurtarılamayacağını unutmamalıyız. Bir kaydı silmek için sayfayı oluşturacağız sil.php ve aşağıdaki kodu kullanacağız.
 
Dosyaların blob alanlarında nasıl depolanacağını açıklamak için fazla tasarım yapmadan basit bir kod yaptık, dezavantajlardan biri, dosyaları ikili biçimde depolarken veritabanının boyutunun çok büyümesidir.
Avantajlardan biri, dosyaların bir tablo içine kaydedilmesidir; bu, güvenlik nedenleriyle daha iyidir, çünkü dosyalara yalnızca veritabanını yönetme izinleriniz varsa ve dosyaları indirebileceğiniz hiç bir Fiziksel klasör yoksa erişilebilir. veya onları bir saldırgan tarafından manipüle edin.

Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave