• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

renato6

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

13 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

posta ai o codigo de upload, so para verificar uma situação

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Este tópico está um show :)

Aposto que 1 décimo deste código não deve de ser preciso...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o que e que tu dizes que nao e preciso?

tirando as cenas que estao como comentario (//) tudo o resto e preciso

alem disso o meu problema nao esta em fazer o upload mas sim em fazer o download

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ninguem sabe como e que eu posso fazer isto? :P:(:D:(:confused:

abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros 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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora