Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    390

    richiamare immagini dentro il db

    Salve....

    ho seguito il manuale che ho trovato su questo sito per visualizzare le immagini registrate dentro il data base, ma ho un problema nella visualizzazione:

    questo è il codice:

    codice:
    <?php
    
    if(!isset($_GET)) $_GET = $HTTP_GET_VARS;
    
    if($_GET["action"] && $_GET["Id"] && is_numeric($_GET["Id"])) {
    
    // CONNESSIONE AL MYSQL
    @mysql_connect("host", "user", "password") or die("Connessione fallita !");
    
    // SELEZIONE DATABASE
    @mysql_select_db("FileBinari") or die("Selezione Database fallita !");
    
    switch($_GET["action"]) {
    
    // VISUALIZZAZIONE
    case "view" :
    
    $query = "SELECT DatiBinari, Type FROM file_binari WHERE Id = '" . $_GET["Id"] . "'";
    $select = @mysql_query($query) or die("Query fallita !");
    
    $result = @mysql_fetch_array($select);
    
    $data = $result["DatiBinari"];
    $type = $result["Type"];
    
    Header("Content-type: $type");
    echo $data;
    
    break;
    
    // DOWNLOAD
    case "download" :
    
    $query = "SELECT DatiBinari, Nome, Type FROM file_binari WHERE Id = '" . $_GET["Id"] . "'";
    $select = @mysql_query($query) or die("Query fallita !");
    
    $result = @mysql_fetch_array($select);
    
    $data = $result["DatiBinari"];
    $name = $result["Nome"];
    $type = $result["Type"];
    
    // SE IL BROWSER E' INTERNET EXPLORER
    if(ereg("MSIE ([0-9].[0-9]{1,2})", $_SERVER["HTTP_USER_AGENT"])) {
    
    header("Content-Type: application/octetstream");
    header("Content-Disposition: inline; filename=$name");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Pragma: public");
    
    } else {
    
    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename=$name");
    header("Expires: 0");
    header("Pragma: no-cache");
    
    }
    
    echo $data;
    
    break;
    
    default :
    
    // DEFAULT CASE, NESSUNA AZIONE
    
    break;
    
    } // endswitch
    
    // CHIUDIAMO LA CONNESSIONE
    @mysql_close();
    
    } //endif
    
    ?>

    quando lo vado ad eseguire mi esce un errore

    Warning: Cannot modify header information - headers already sent by (output started at /home/secaleys/public_html/macbbb/php/news/prova.php:1) in /home/secaleys/public_html/macbbb/php/news/prova.php on line 26

    e sotto mi esce il testo con il binario del file...

    Qualcuno mi può aiutare????

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    controlla di nn avere nessun tipo di output prima dell'invio degli header (anche uno spazio prima di <?php viene considerato da php come output)
    think simple think ringo

  3. #3
    io, come consigliatomi da altri forumisti faccio kosì

    codice:
    <?php
    //funzione/file per visualizzare immagini d adb
    global $blobId;
    
    $db = mysql_connect('localhost','xxxx','xxxx')or die('1. '.mysql_error());
    mysql_select_db('nome_db')or die ('2. '.mysql_error());
    
    $dbQuery = "SELECT type, file FROM tabella WHERE id = $blobId";
    $result = mysql_query($dbQuery) or die('3. '.mysql_error());
    
    $fileType = @mysql_result($result, 0, "type");
    $fileContent = @mysql_result($result, 0, "file_binario");
    
    header("Content-type: $fileType");
    
    include 'resize.php';
    $img_res = imagecreatefromstring($fileContent);
    $new_img_res = resize_image($img_res, 250, 200);	//setti le dimensioni massime che vuoi per la tua img
    unset($img_res);
    print_image($new_img_res, 100);
    unset($new_img_res);
    ?>
    ovviamente cambia i nomi del db, user, password, tabella e campi associati

    nomina questo file come "action.php"

    poi nella pagina rikiami la foto con

    codice:
    [img]actions2.php?blobId=tuo_campo_id[/img]
    poi ti fai una seconda pagina ke kiamerai "resize.php"


    codice:
    <?
    function resize_image($img_res, $maxX, $maxY) {
    		$actualX=imagesx($img_res);
    		$actualY=imagesy($img_res);
    
    		if ($actualY>$maxY){
    			$newY = $maxY;
    			$newX=($actualX/$actualY)*$newY;
    			if ($newX>$maxX) {$newX = $maxX; $newY = ($actualY/$actualX)*$newX;}
    		}elseif ($actualX>$maxX){
    			$newX = $maxX;
    			$newY = ($actualY/$actualX)*$newX;
    			if ($newY>$maxY) {$newY = $maxY; $newX=($actualX/$actualY)*$newY;}
    		}else{
    			$newX = $actualX;
    			$newY = $actualY;
    		}
    		$tmp_img_res = imagecreatetruecolor($newX, $newY);
    		$res = imagecopyresampled($tmp_img_res, $img_res, 0, 0, 0, 0, $newX, $newY, $actualX, $actualY);
    		return $tmp_img_res;
    	}
    
    	function save_image($img_res, $filename, $quality=100) {
    		imagejpeg($img_res, $filename, $quality);
    	}
    
    	function print_image($img_res, $quality=100) {
    		header('Content-Type: image/jpeg');
    		imagejpeg($img_res,NULL, $quality);
    	}
    ?>
    il codice è di daniele_dll

    questa serve per ridimensionare le tue immagini a piacimento con i parametri ke hai settato nella pagina "acrtion.php"

    a me funziona perfettamente, a patto ke tu abbia le librerie attive e tutto ciò ke serve nel tuo spazio


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.