blob mysql dan görüntü göstermek

6 Cevap php

Merhaba benim veritabanında bir görüntü tablo var. Bunlar görüntü türü & gibi ayrıntıları ile birlikte blob olarak depolanır isim.

I am having a problem showing the image, all I get is a white box with a red cross in it. code:

<?php

include '../connection.php';

$ID = $_GET['id'];

$query = "SELECT * FROM `images` WHERE `image_id` = '$ID'";

$result=mysql_query($query);
$row = mysql_fetch_array($result);

$image = $row['image'];
$image_type= $row['image_type'];   

header("Content-type: $image_type");
print $image; 

exit;

?>

Teşekkürler

6 Cevap

Peki burada kısa bir cevaptır.

<?php
include '../connection.php';
$id = (int)$_GET['id'];
$query = "SELECT * FROM `images` WHERE `image_id` = '$id'";

$result=mysql_query($query);
$row = mysql_fetch_array($result);

$image = $row['image'];
$image_type= $row['image_type'];
$size = $row['image_size'];
//alternative
/* list($image, $image_type, $size) = array(
                                       $row['image'],
                                       $row['image_type'],
                                       $row['image_size']
                                      );
*/
$ext = explode('/', $image_type);
$name = $id . '.' . $ext[1]; 

header("Content-type: $image_type");
header("Content-length: $size");
header("Content-Disposition: attachment; filename=$name");

print $image;     
exit;

16M kadar veri depolamak için mümkün en az MEDIUMBLOB olmak için blobtype kontrol

Bu hata ayıklamak için, ben yorumlama-out Content-type başlık satırı, daha sonra doğrudan tarayıcıda url isabet öneririm. Bu PHP yayan olabilecek herhangi bir hata, uyarı veya bildirimlerini görmek için izin verir.

Şeyler denemek için çift

  1. belki bir şey başarısız ve yerine beklenen görüntü html bir hata msg dönüyor

  2. içerik_türü doğru veritabanında saklanır ya da sadece görüntünün dosya uzantısını depolamak

içerik türü bu gibi görünmelidir

image/gif 
image/jpeg

Işe yarayabilecek gibi olduğu görünüyor, ne yanlış gidiyor?

Açıkça alanları belirlemek için deneyin:

 SELECT image, image_type FROM ...

Eğer veritabanından sorgu çalıştırdığınızda ne olur?

Eğer görüntüyü gibi yüklüyorsunuz:

<img src="image.php?id=12">

Yoksa kendi sayfası olarak PHP yüklerim?

belki deneyebilirsiniz

$row = mysql_fetch_assoc($result);

yerine

$row = mysql_fetch_array($result);

Ancak daha sonra "MEDIUMBLOB" olarak değiştirdi - Sen "[64.0 KB BLOB]" tablo başlangıçta söyledi bir yorum dedi. Bu saklayabilirsiniz boyutunu genişletmek, ancak mevcut tüm verileri hala 64KiB fazlalıklar atılacak.

Kullandığınız alan türü (Ben eminim bir LONGBLOB bir MEDIUMBLOB veya ~ 4GB 16MB) depolamak ve daha sonra tüm verilerinizi yeniden eklemek istediğiniz verileri saklamak için yeterince büyük olduğundan emin olun.

Kod veritabanı sorunundan başka işe neden belirtilen güvenlik sorunları dışında, ben görmüyorum.