Jump to content

"Download" do file que se encontra na base de dados (SQL)


renato6
 Share

Recommended Posts

Pessoal, tenho uma duvida.

eu utilizo este codigo para mostar imagens no meu site em php:

<?php
$ligax=mysqli_connect('localhost','root');
if($ligax) {
mysqli_select_db($ligax,'nomedabasededados');
//$l=$_GET['cod_produto'];
if(!mysqli_error($ligax)) {
$query ="select image_name, image_type, image_size,image_data from produto where cod_produto=".$_GET["pp"]."";
$result=mysqli_query($ligax,$query);
$row=mysqli_fetch_array($result);
$type=$row["image_type"];
$name=$row["image_name"];
$size=$row["image_size"];
// get the file data
$data=base64_decode($row["image_data"]);

// output the file
header("Content-type:$type");
header("Content-length:$size");
header("Content-Disposition: inline; filename=$name");
header("Content-Description: PHP Generated Data");
echo $data;
}
}
?>

no entanto, o codigo que tenho que faz o upload das imagens,e tambem da para fazer upload de ficheiros.

eu consigo fazer o upload de ficheiros para a base de dados mas depois nao consigo fazer o downoad (faz o download mas e de um ficheiro que nem tem extensao nem nada e que ocupa meia duzia de kbytes) dele. eu penso que a razao porque ele nao me traz o ficheiro correctamente seja por causa dos headers que estao ai.

podem me dar uma vista de olhos nesse codigo e dizerem-me o que esta mal ou o que e que falta?

cumps

Link to comment
Share on other sites

<title>Adicionar Produto</title>
<br>
<h2 align="center">Adicionar Novo Produto</h2>
<br>
<?php
$ligax=mysqli_connect(localhost,root);
if(!$ligax){
echo '<p> Falha na ligação.'; exit;
}
mysqli_select_db($ligax,'diagonalley');
if(isset($_POST["adicionar"])){
$nome_produto = $_POST['nome_produto'];
$descricao_produto = $_POST['descricao_produto'];
$preco = $_POST['preco_unitario'];
$iva = $_POST['iva'];
$quant_stock = $_POST['quantidade_stock'];
$stock_min = $_POST['stock_minimo'];
$tipo_produto = $_POST['tipo_produto'];
$promocao = $_POST['promocao'];
$activo = $_POST['activo'];

//if (($iva!=5) && ($iva!=12) && ($iva!=21))
//		{
//			echo "<font face='verdana' size='-2' color='#000000'><br>Iva Inválido.</font>";
//		$flag=false;
//	}

//	if((!is_numeric($preco)) or (strlen($preco)>9))
//	{
//		echo"<font face='verdana' size='-2' color='#000000'><br>Preço Inválido - Apenas dados numéricos.</font>";
//	$flag=false;
//	}

//	if(!is_int($stock_min))
//	{
//		echo"<font face='verdana' size='-2' color='#000000'><br>Stock Minimo Inválido - Apenas dados numéricos inteiros.</font>";
//	$flag=false;
//	}


$insere="INSERT INTO produto (nome_produto,descricao_produto,preco_unitario,iva,quantidade_stock,stock_minimo,tipo_produto,promocao,activo) VALUES ('".$nome_produto."','".$descricao_produto."','".$preco."','".$iva."','".$quant_stock."','".$stock_min."','".$tipo_produto."',0,1)";
$result=mysqli_query($ligax,$insere);
//echo $insere;

	if($result==1){
	if ($_FILES['userfile']['error']==0){
		$file_id=mysqli_insert_id($ligax);
		$file_name=$_FILES['userfile']['name'];
		$file_type=$_FILES['userfile']['type'];
		$file_size=$_FILES['userfile']['size'];
		$file_tmp=$_FILES['userfile']['tmp_name'];
		$data=base64_encode(file_get_contents($file_tmp));
		$query="update produto set image_name='".$file_name."',image_type='".$file_type."',image_data='".$data."',image_size=$file_size where cod_produto=$file_id";
		$result_up=mysqli_query($ligax,$query);
		//} else { echo "erro";}
		}
	//echo $query;
	echo "<p>Dados inseridos com sucesso</p><a href=\"index.php?pagina=admin\">Voltar</a>";
} else { echo "<p>Dados não inseridos</p>";
?>
<form method="post" enctype="multipart/form-data">
<table align="center" border="0">
<tr>
<td><p>Nome</td><td><input type="text" name="nome_produto" size="50" maxlength="60"></p></td>
</tr>
<tr>
<td><p>Descrição</td><td><textarea name="descricao_produto" cols="37" rows="5"></textarea></p></td>
</tr>
<tr>
<td><p>Preço Unitário (€)</td><td><input type="text" name="preco_unitario" size="50" maxlength="10"></p></td>
</tr>
<tr>
<td><p>Iva (%)</td><td><input type="text" name="iva" size="50" maxlength="5"></p></td>
</tr>
<tr>
<td><p>Quantidade Stock</td><td><input type="text" name="quantidade_stock" size="50" maxlength="10"></p></td>
</tr>
<tr>
<td><p>Stock Minimo</td><td><input type="text" name="stock_minimo" size="50" maxlength="10"></p></td>
</tr>
<tr>
<td><p>Categoria do Produto</td><td><select name="tipo_produto"> 
<option value="Filmes">Filmes</option>
<option value="Jogos">Jogos</option>
<option value="Livros">Livros</option>
<option value="Musica">Música</option>
<option value="Acessorios">Acessórios</option>
<option value="Vestuario">Vestuário</option>
</select></p></td>
</tr>
<tr>
<td><p>Imagem do Produto</td>
<td><input name="userfile" type="file"></td>
</tr>
</table>
<br>
<table border="0" align="center">
<tr>
<td colspan="2" align="center"><input type="submit" value="Adicionar" name="adicionar"></td>
</tr>
</table>
</form>


<?php
	}
} else  { 
?>

<form method="post" enctype="multipart/form-data">
<table align="center" border="0">
<tr>
<td><p>Nome</td><td><input type="text" name="nome_produto" size="50" maxlength="60"></p></td>
</tr>
<tr>
<td><p>Descrição</td><td><textarea name="descricao_produto" cols="37" rows="5"></textarea></p></td>
</tr>
<tr>
<td><p>Preço Unitário (€)</td><td><input type="text" name="preco_unitario" size="50" maxlength="10"></p></td>
</tr>
<tr>
<td><p>Iva (%)</td><td><input type="text" name="iva" size="50" maxlength="5"></p></td>
</tr>
<tr>
<td><p>Quantidade Stock</td><td><input type="text" name="quantidade_stock" size="50" maxlength="10"></p></td>
</tr>
<tr>
<td><p>Stock Minimo</td><td><input type="text" name="stock_minimo" size="50" maxlength="10"></p></td>
</tr>
<tr>
<td><p>Categoria do Produto</td><td><select name="tipo_produto"> 
<option value="Filmes">Filmes</option>
<option value="Jogos">Jogos</option>
<option value="Livros">Livros</option>
<option value="Musica">Música</option>
<option value="Acessorios">Acessórios</option>
<option value="Vestuario">Vestuário</option>
</select></p></td>
</tr>
<tr>
<td><p>Imagem do Produto</td><td><input name="userfile" type="file">
</td></tr>
</table>
<br>
<table border="0" align="center">
<tr>
<td colspan="2" align="center"><input type="submit" value="Adicionar" name="adicionar"></td>
</tr>
</table>
</form>

<?php
}
if($ligax) mysqli_close($ligax);
?>

cumps

Link to comment
Share on other sites

eu quero fazer download do ficheiro que faço upload para a base de dados.

o codigo que esta em cima e o que faz o upload. e verdade que esta muito extenso mas esse codigo e para adicionar um produto e fazer o upload de uma imagem ao mesmo tempo.

no entanto pesno que esse codigo acima que faz upload da imagem tambem da para fazer upload de um ficheiro nao e?

pelo menos eu tentei e o ficheiro foi para a base de dados.

so que nao o consigo fazer o download do ficheiro que fiz upload com o codigo que esta abaixo.

<?php
$ligax=mysqli_connect('localhost','root');
if($ligax) {
mysqli_select_db($ligax,'nomedabasededados');
//$l=$_GET['cod_produto'];
if(!mysqli_error($ligax)) {
$query ="select image_name, image_type, image_size,image_data from produto where cod_produto=".$_GET["pp"]."";
$result=mysqli_query($ligax,$query);
$row=mysqli_fetch_array($result);
$type=$row["image_type"];
$name=$row["image_name"];
$size=$row["image_size"];
// get the file data
$data=base64_decode($row["image_data"]);

// output the file
header("Content-type:$type");
header("Content-length:$size");
header("Content-Disposition: inline; filename=$name");
header("Content-Description: PHP Generated Data");
echo $data;
}
}
?>

cumps

Link to comment
Share on other sites

tipo em vez do guardares memo o ficeiro na base de dados guardas numa pasta no servidor

depois gaurdas o caminho no sql e depois para fazer donload e so usares o caminho

Ele não quer que se veja o caminho do download e proteger o ficheiro.

renato qual é o erro, etc...

Link to comment
Share on other sites

tipo nao me da erro nenhum. so que quando carrego na palavra que tem o cenas para fazer download aparece-me o ficheiro e tudo isso direitinho so que quando clico em guardar, ele nao me traz o ficheiro mas traz um ficheiro qualquer sem extensao nem nada.

cumps

P.S. obrigado pelo conselho dark miguel mas eu queria mesmo fazer assim.

Link to comment
Share on other sites

pessoal andei a investigar e isto nao ia dar grande resultado porque se mete-sse alguns ficheiros, por mais pequenos que fossem os ficheiros, a base de dados iria ficar muito pesada e nao ia dar grande resultado.

no entanto sei que ha uma maneira de guardar os ficheiros na pasta onde tenho o projecto e depois fazer o download a partir do site desses ficheiros, so que nao sei como fazer isso.

podem-me ajudar?

cumps

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.