Obrazki z bazy danych


(Drobok) #1
if ($_FILES) { 

  $image_types = array("image/bmp", "image/jpeg","image/pjpeg","image/gif","image/x-png"); 

  if(is_uploaded_file($_FILES["userfile"]["tmp_name"])) 

  { 

    $userfile = addslashes (fread 

                 (fopen ($_FILES["userfile"]["tmp_name"], "r"), 

                 filesize ($_FILES["userfile"]["tmp_name"]))); 

    $file_name = $_FILES["userfile"]["name"]; 

    $file_size = $_FILES["userfile"]["size"]; 

    $file_type = $_FILES["userfile"]["type"]; 


    if (in_array (strtolower ($file_type), $image_types)) { 

      $sql = "INSERT INTO test_image " 

             . "(image_type, image, image_size, image_name, image_date) "; 

      $sql.= "VALUES ("; 

      $sql.= "'{$file_type}', '{$userfile}', '{$file_size}', " 

             . "'{$file_name}', NOW())"; 

      @mysql_query ($sql, $conn); 

      header("Location:".$_SERVER["PHP_SELF"]); 

      exit(); 

    } 

  } 

}

$sql = "SELECT * FROM test_image WHERE image_id=".$_GET["iid"]; 

$result = mysql_query ($sql, $conn); 

$row = mysql_fetch_array($result);

  $image_type = $row["image_type"]; 

  $image = $row["image"]; 

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

  print $image;

Po wejściu w php pobierającego plik z bazy http://test.not4you.tk/test.php. Text jako taki jest, ale zamiast obrazków mam img.php?iid=4


(adpawl) #2

To raczej nie jest cały plik.

Najpewniej coś się wcześniej wysyła - jeżeli nie masz w kodzie nic co przed headerem by się wysłało, to może serwer dorzuca w locie reklamy albo statystyki :roll:

...albo dane się kraczą przy zapisie/odczycie DB.

Sprawdź sobie, czy obsłuży ci grafikę wczytaną z pliku - zczytaj sobie plik przez file_get_contents, potem wywal na ekran ze stosownym nagłówkiem content-type.

Jeżeli zadziała, to szukaj przyczyny w komunikacji z bazą. Jeżeli nie zadziała, to już wiesz, że winny darmowy hosting. Możesz próbować obchodzić problem mapując sobie skrypt na jakieś niestandardowe rozszerzenie ( w .htaccess np. AddHandler php-script .thl )

Inna bajka, ja bym grafik w bazie nigdy nie trzymał.


(Drobok) #3

Zapytam na forum cba, text-plain działa ok :slight_smile: