Nasıl bir başlığı ayarlamak () ve CodeIgniter'ı kullanarak görüntüyü yankı mı?

1 Cevap php

Ben bir veritabanında saklanan bir yüklenme uygun dosya türüne header () ayarlamak için bir yöntem yazdım ve sonra () dosya yankı istiyorum.

Bir denetleyici içinde aşağıdaki gibi bir yöntemdir:

function view_upload( $id = 0 ) {

    $id = $this->db->escape( $id );

    $query = $this->db->query( "SELECT file_type FROM media WHERE id = $id" )->row();
    $query2 = $this->db->query( "SELECT file FROM media WHERE id = $id" )->row();		

    header("Content-type: ".$query->file_type);
    //die( "moo" );
    echo( $query2->file );
}

Garip kısa sürede ben başlığını ayarlama olarak () yönteminin kalanı ben ölmez die () deyimi yorumsuz ve görüntüyü echo değilse, örneğin, gözardı edilecek gibi görünüyor. Ben başlığı kaldırırsanız () Ben ekrana sunulan ham yükleme damla bakın diyoruz ..

Bu CodeIgniter ile ilgili bir şey var mı ya da ben bir PHP hata yaptık?

EDIT:

Ben işlevi değişti ve CodeIgniter dışında ayrı bir dosyaya koydum ama ben buna göz ve $ id geçirirseniz hala görüntü vermiyorsa ettik ...

<?php
// just so we know it is broken
error_reporting(E_ALL);
// some basic sanity checks
if(isset($_GET['id']) && is_numeric($_GET['id'])) {
    //connect to the db
    $link = mysql_connect("localhost", "user", "pass") or die("Could not connect: " . mysql_error());

    // select our database
    mysql_select_db("database") or die(mysql_error());

    $id = $_GET['id'];

    // get the file from the db
    $sql = "SELECT file FROM media WHERE id=$id";
    // the result of the query
    $result = mysql_query("$sql") or die("Invalid query: " . mysql_error());

    // get the file_type from the db
    $sql = "SELECT file_type FROM media WHERE id=$id";
    // the result of the query
    $result2 = mysql_query("$sql") or die("Invalid query: " . mysql_error());

    // set the header for the image
    //ob_clean();
    //die( mysql_result($result, 0) );
    //header('Content-type:'.mysql_result($result2, 0));
    header('Content-type: image/png');
    //ob_clean();
    echo mysql_result($result, 0);

    // close the db link
    mysql_close($link);
}
else {
    echo 'Please use a real id number';
}
?>

iki $ sonucu () die ben ama tarayıcıda sayfa görüntüleme değil beklediğiniz üretir. Ben ob_clean eklemek Yine if () diyor:

ob_clean() [<a href='ref.outcontrol'>ref.outcontrol</a>]: failed to delete buffer. No buffer to delete.

Ben buradan kopyaladığınız kodu ettik: http://www.phpriot.com/articles/images-in-mysql/8 hepsi de yardımcı olur ..

1 Cevap

Bu veritabanında görüntü bozuk olduğu ortaya çıkıyor, ve ben addslashes eklemişti çünkü dolayısıyla (gerçekten emin değilim neden, XSS açıkları ile mücadelede yararlı okuma unutmayın görünmektedir) dosya içeriğine (), görüntüleme değil.

Ben bozuk olmayan görüntüler saklı kaldı ve sonra onlar tamam görüntülenir geliyordu Çıkarma.