download file pdf da mysql con php

Davide Valenti

Nuovo Utente
6 Ago 2015
1
0
0
salve ragazzi,sono un nuovo utente, mi chiamo davide :) avrei un file pdf caricato su un database con nomefile,tipo,size,dati(mediumblob).
adesso avrei bisogno di creare un link(o salvataggio o visualizzazione è uguale)
in realtà ho già creato qualcosa ma con scarsi risultati(scarica il file ma è impossibile aprirlo con acrobat reader probabilmente è stato decodificato male) e cercando su internet notavo che le soluzioni erano uguali o simili alle mie.
mi appello a qualcuno di voi per il codice o per una semplice spiegazione, scusate il disturbo e grazie in anticipo.

carico la funzione di upload che anche se è funzionante non so se è corretta :
PHP:
<?php 
	//creo la connessione
	$link = mysql_connect('localhost','root',''); 
	if (!$link) { 
		die('Non posso connettermi a MySQL: ' . mysql_error()); 
	} 
	echo 'Connection OK'; 
//seleziono il database
mysql_select_db("archivio")
	 	or die ("non trovo il DB");	
//Acquisisco le informazioni del form
$nome = $_POST['nome'];
$codfisc = $_POST['codice'];
$cognome = $_POST['cognome'];
	
	//variabili relative all'allegato
	$allegato = $_FILES['allegato']['tmp_name']; 
	$allegato_type = $_FILES['allegato']['type']; 
	$allegato_name = $_FILES['allegato']['name']; 
	$allegato_size = $_FILES['allegato']['size'];
	
	if (is_uploaded_file($allegato)) 
	{ 
	  // Apro e leggo il file allegato 
	  $file = fopen($allegato,'rb'); 
	  $data = fread($file, filesize($allegato)); 
	  $data = addslashes($data);
	  fclose($file); 
	} 

	//creo query di inserimento
	$inser= "INSERT INTO utenti
						(nome,cognome,codfisc,nomef,tipo,size,dati)
						VALUES
						('$nome','$cognome','$codfisc','$allegato_name',
						'$allegato_type','$allegato_size','$data')";
   //inserisco nel db
	$result = mysql_query($inser);
	//controllo che sia andato a buonfine
	if($result){
		echo("<h1>Dati inseriti correttamente");
	}
	else{
		echo("<h1>Errore inserimento dati");
	}
	mysql_close($link); 
?>

ed ecco quella di download (non funzionante):

PHP:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="PHP Studio">
<title>untitled</title>
</head>
<body>
    <?php
         //creo la connesione
    	$link = mysql_connect('localhost','root','');
	if (!$link) {
		die('Non posso connettermi a MySQL: ' . mysql_error());
	}
	echo 'Connection OK';
	//seleziono il database
	 mysql_select_db("archivio")
	 	or die ("non trovo il DB");
    $query = mysql_query("SELECT nomef, tipo, size, dati FROM utenti WHERE nomef = 'suca.pdf'");
    $row = mysql_fetch_assoc($query);
    $nome = $row["nomef"]; // nome del file da scaricare
    $tipo= $row["tipo"]; // tipo file (es. application/pdf)
    $size= $row["size"]; // dimensione del file in bytes
    $bytes = $row["dati"]; // dati binari del file
    mysql_close($link);
    // scarichiamo il file
    header('Content-Transfer-Encoding: binary');
    header("Content-Length: $size");
    header("Content-Type: $tipo");
    header("Content-Disposition: inline; filename=$nome");
    echo $bytes;
    mysql_close($link);
?>
</body>
</html>

grazie in anticipo delle risposte.
 
Ultima modifica di un moderatore:
ciao
attento all'header, da manuale php
Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include, or require, functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.
 

Discussioni simili