Nasıl yüklemek ve dosyaları olarak kaydetme olmaksızın doğrudan php kullanarak mysql blob alanın görüntüleri görüntüleyebilir?

3 Cevap php

Ben mediablobs olarak mysql saklanan görüntüleri var, ve ben ilk dosyaları olarak kaydetmek zorunda kalmadan doğrudan veritabanından onları (gösteri) yüklemek istiyorum.

I need to load multiple images into a table (thumbs), so the header command won't do it. this is what I do:

    	$imagePath = 'files' . DS . 'recipe_' . $recipe['Recipe']['id'] . '.tmp';
	    file_put_contents($imagePath ,$recipe['Recipe']['image']);
		echo $html->image(DS . $imagePath);

3 Cevap

Sen getimage.php adında bir komut dosyası oluşturun. Tabloda başparmak gibi bir şey bu olmalı:

<img src='<path>/getimage.php?id=<image_id>' />

Scipt getimage.php veritabanı arama yapar ve sonra gibi bir şey verir:

...
header('Content-Type: image/jpeg');
header('Content-Length: ' . strlen($recipe['Recipe']['image']) );
echo $recipe['Recipe']['image'];
...

Lütfen getImage.php komut için. Diğer seçenek httpd.conf veya tüm resim istekleri (vs, vs.. | | * Png .gif| jpg) yönlendirir bir htaccess dosyası ya yönlendirme bir apache kullanmak olacaktır . Ardından getImage.php, veritabanından çekin uygun başlıkları ve çıkış ikili veri göndermek istiyorsunuz.

Flavius ​​Stef cevabı üzerine bu avantajı daha sonra etiketleri normal görünümlü kaynağı (/ yol / / resim.jpg) ziyade bir açık raf sistemi sahip olmasıdır. Ayrıca aynı anda apache erişim günlüklerini temizlemek olacaktır.

Ben çalışma var ....

Bu benim tabloya koymak budur:

'<img src= "/recipes/download/" . $recipe['Recipe']['id']) . '"/>'

ve bu yükleme eylem:

function download($id) {
    Configure::write('debug', 0);
    $file = $this->Recipe->findById($id);

    header('Content-type: image/png' );
    header('Content-length: ' . strlen($file['Recipe']['thumb'])); // some people reported problems with this line (see the comments), commenting out this line helped in those cases
    header('Content-Disposition: attachment; filename="'.$file['Recipe']['thumb'].'"');
    echo $file['Recipe']['thumb'];

    exit();
}