Nasıl MySQL bir görüntü ekleyebilirsiniz ve sonra PHP kullanarak almak?
Ben iki alanda sınırlı deneyimi var ve ben bana bu sergiyi başlamak için küçük bir kod kullanabilirsiniz.
Makale Storing Images in MySQL Revisited bir yol gösterir. Önce örneğin gibi, görüntüleri depolamak için bir MySQL tablo oluşturun:
create table testblob (
image_id tinyint(3) not null default '0',
image_type varchar(25) not null default '',
image blob not null,
image_size varchar(25) not null default '',
image_ctgy varchar(25) not null default '',
image_name varchar(50) not null default ''
);
Sonra veritabanı gibi bir görüntü yazabilirsiniz:
$imgData = file_get_contents($filename);
$size = getimagesize($filename);
mysql_connect("localhost", "$username", "$password");
mysql_select_db ("$dbname");
$sql = sprintf("INSERT INTO testblob
(image_type, image, image_size, image_name)
VALUES
('%s', '%s', '%d', '%s')",
mysql_real_escape_string($size['mime']),
mysql_real_escape_string($imgData),
$size[3],
mysql_real_escape_string($_FILES['userfile']['name'])
);
mysql_query($sql);
Sen bir web sayfasında veritabanından bir resim görüntüleyebilirsiniz:
$link = mysql_connect("localhost", "username", "password");
mysql_select_db("testblob");
$sql = "SELECT image FROM testblob WHERE image_id=0";
$result = mysql_query("$sql");
header("Content-type: image/jpeg");
echo mysql_result($result, 0);
mysql_close($link);
Diskten onlara hizmet daha much yavaş, DB görüntüleri hizmet genellikle çok olduğunu unutmayın.
DB dosya sistemi olarak önbellek için aynı disk ve RAM kullanımı olan, db bağlantıları yaratma, PHP işlemine başlamadan olacak, birkaç priz ve tamponların üzerine aktarılması ve daha sonra varsayılan olarak önbelleklenebilir olmayan yapar ve PHP yoluyla dışarı iterek ekler olur yığın halinde HTTP kodlama yükü.
Onlar bile geçici bellek kopya yok ve hemen hemen hiç tepegöz var o kadar OTOH modern web sunucuları, sadece birkaç optimize çekirdek çağrıları (hafıza-eşlenmiş dosya ve TCP yığını geçti bellek alanı) ile görüntüleri hizmet edebilir.
Yani ortalama makinede paralel 20 veya 2000 görüntüleri hizmet arasında fark var.
So don't do it kesinlikle (ve aslında bile DB sadece görüntü meta ile yapılır ve dosya sistemi temizleme rutinleri olabilir) ve görüntüler için uygun olması HTTP PHP'nin hakimiyetini artırmak için nasıl işlem bütünlüğünü gerekmedikçe.
Benim görüşüm yerine doğrudan veritabanına görüntüleri depolama, Bu veritabanında görüntü konumunu saklamak için tavsiye edilir, olduğunu. Biz de seçenekleri karşılaştırmak gibi, veritabanında görüntüleri saklanması güvenlik amacıyla güvenli. Dezavantajı vardır
Veritabanı bozuksa, hiçbir yol almak.
Diğer seçenek karşılaştırmak db görüntü dosyaları alınıyor yavaş.
Öte yandan, db resim dosya konumunu depolama aşağıdaki avantajlara sahip olacaktır.
Bu almak kolaydır.
Birden fazla görüntüleri saklanır, biz kolayca görüntü bilgileri alabilirsiniz.