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

watt

fazer upload de imagens

32 mensagens neste tópico

oi pessoal!

alguem me pode dizer como faço upload de imagens pó meu site ??

só q com uma diferença, qd passo a imagem do pc para o site quero que ela fique com o nome = ao numero do campo ID

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

http://pt.php.net/manual/en/function.move-uploaded-file.php

explicação

http://pt.php.net/manual/en/features.file-upload.php

tem um exemplo simples

para o que tu queres basta mudar esta linha

$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

sendo que ficaria algo do genero

$uploadfile = $uploaddir.$_POST['id'];

/* Estou a supor que o ID é dado no formulario */

Espero que tenha ajudado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu já fiz algo semelhante quando iniciei a aprendizagem do php. era algo assim do tipo:

$uploaddir = $nome."/";      
$uploadfile = $uploaddir . basename($_FILES['file']['name']);      
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {        
echo "File upload...<b>OK</b>";	}
//ficheiro no servidor, agora alterar para imagem.gif
rename ($uploaddir.$file,$uploaddir."imagem.gif");	

// no teu caso não é mudar para este nome mas sim para o que tu quizeres.

penso que é esta a parte que intereca.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

neste momento o site ainda esta a ser feito e tá com erros mas se quiserem podem acompnhar o meu projecto www.splashportal.com, tipo, akilo sp q escreve na bd dá erros, mas fica rd registado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

neste momento o site ainda esta a ser feito e tá com erros mas se quiserem podem acompnhar o meu projecto www.splashportal.com, tipo, akilo sp q escreve na bd dá erros, mas fica rd registado

Tem um design muito limpo. Parabéns! :thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

neste momento o site ainda esta a ser feito e tá com erros mas se quiserem podem acompnhar o meu projecto www.splashportal.com, tipo, akilo sp q escreve na bd dá erros, mas fica rd registado

Tive a ver o site e está com um bom design.

Os erros vais ter de colocar aqui o código para podermos ajudar..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

De momento não tenho muito tempo para ler o que foi dito nos tópicos e perceber porquê que ainda não conseguiste por a funcionar, mas se precisares de um exemplo prático, onde tal funcionalidade esteja a funcionar correctamente, podes dar uma vista de olhos ao meu script de manutenção de fotologs. Podes sacar o script no meu site, exprimenta instala-lo numa directoria qualquer para testes e vê se o upload esta a funcionar, se estiver, vê o código que esta no nz_upload.php e vê o que fizeste de errado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

qd vou escrever na bd o nome do ficheiro aparece o link td não é forma de ser só o nome do file ?

outro prob. qd tento gravar os files do upload no meu localhost ele dá erro, mas se poser esse codigo na net ele já copia na boa.

como é que meto isto a gravar no meu localhost, qd estou a testar gosto de ter certezas...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu já fiz algo semelhante quando iniciei a aprendizagem do php. era algo assim do tipo:

$uploaddir = $nome."/";      
$uploadfile = $uploaddir . basename($_FILES['file']['name']);      
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {        
echo "File upload...<b>OK</b>";	}
//ficheiro no servidor, agora alterar para imagem.gif
rename ($uploaddir.$file,$uploaddir."imagem.gif");	

// no teu caso não é mudar para este nome mas sim para o que tu quizeres.

Aproveitando o código já apresentado........  :cheesygrin:

$uploaddir = $nome."/";      
$nomeFicheiro = $_FILES['file']['name'];     // AQUI ESTAS A GUARDAR NUMA VARIAVEL APENAS O NOME DO FICHEIRO
$uploadfile = $uploaddir . basename($_FILES['file']['name']);      

if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))    echo "File upload...<b>OK</b>";	
       
        // AGORA E SO GUARDARES A VARIAVEL $nomeFicheiro na BD


Espero que assim já ajude.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aproveito e deixo aqui a minha função para fazer o upload de imagens com restrições em: tipo de foto e tamanho da foto.

function guardarImagemNoServidor($imagem) {	
$erro = "0";
$caminho = "images/Large/";
$caminhoThumb = "images/Small/";
$ficheiro = $imagem['name'];
$imagemNova = $caminho.$ficheiro;

if($imagem['size']>150000) $erro = "Tamanho da imagem superior a 150kb";
else {
	if(move_uploaded_file($imagem['tmp_name'], $imagemNova)) {

		if($imagem['type']=='image/gif') $type = 'gif'; 
		elseif($imagem['type']=='image/png') $type = 'png';
		elseif($imagem['type']=='image/pjpeg') $type = 'jpeg';
		elseif($imagem['type']=='image/jpeg') $type = 'jpeg';

		if ($type == 'gif') $handle = @imagecreatefromgif($imagemNova);
		elseif ($type == 'jpeg') $handle = @imagecreatefromjpeg($imagemNova);
		elseif ($type == 'png') $handle = @imagecreatefrompng($imagemNova);

		$x=imagesx($handle);
		$y=imagesy($handle);                                                   
       
   				if($x > $y){                                
           				$max = $x;                          
           				$min = $y;                          
   				}                                          
   				if($x <= $y){                                
           				$max = $y;                          
           				$min = $x;                          
   				}  
                                         
   			$size_in_pixel = 80;
   			$rate = $max/$size_in_pixel;
   			$final_x = $x/$rate;
   			$final_y = $y/$rate;

   				if($final_x > $x) {
   	        			$final_x = $x;
   	        			$final_y = $y;
   				}
   
   		$final_x = ceil($final_x);
   		$final_y = ceil($final_y);
   			$black_picture = imageCreatetruecolor($final_x,$final_y);
   			imagefill($black_picture,0,0,imagecolorallocate($black_picture, 255, 255, 255));
   			imagecopyresampled($black_picture, $handle, 0, 0, 0, 0,$final_x, $final_y, $x, $y);
                     
		if ($type == 'gif') imagegif($black_picture,$caminhoThumb.'thumb_'.$ficheiro, $size_in_pixel);
		elseif ($type == 'jpeg') imagejpeg($black_picture,$caminhoThumb.'thumb_'.$ficheiro, $size_in_pixel);
		elseif ($type == 'png') imagepng($black_picture,$caminhoThumb.'thumb_'.$ficheiro, $size_in_pixel);
    
   			imagedestroy($handle);
   			imagedestroy($black_picture);	
	}
	else $erro = "Erro a criar imagem";
}

return $erro;
}

EDIT: esqueci-me de dizer que também cria thumbnails das imagens.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

  $destino = "../imgartigo"; //Pasta onde serão armazenados os uploads
$uploaddir = "../imgartigo"."/";      
$nomeFicheiro = $_FILES['file']['name'];     // AQUI ESTAS A GUARDAR NUMA VARIAVEL APENAS O NOME DO FICHEIRO
$uploadfile = $uploaddir . basename($_FILES['file']['name']);      

if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))    echo "File upload...<b>OK</b>";	

  $insertSQL = sprintf("INSERT INTO produtos (artigo, descricao, img, preco, familia, nota) VALUES (%s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['artigo'], "text"),
                       GetSQLValueString($_POST['descricao'], "text"),
                       GetSQLValueString($nomeFicheiro, "text"),
                       GetSQLValueString($_POST['preco'], "text"),
                       GetSQLValueString($_POST['familia'], "text"),
                       GetSQLValueString($_POST['nota'], "text"));

ele assim não deveria guardar o nome do file ??

os uploads no meu localhost não estão a passar os files :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

3 perguntas:

1ª Estás a executar esse script numa pasta e queres guardar numa pasta que está ao mesmo nivel certo? Exemplo:

root

|

--imgartigo

|

--pastaOndeCorresScript

Esta pergunta deve-se ao facto de teres

$uploaddir = "../imgartigo"."/";  

2ª O Script devolve-te a frase "File Upload.... OK" ?

3ª Não estás a tentar fazer upload de um ficheiro maior que 2MB ?

Existe um parametro no servidor apache (acho, ou no PHP) que te limita os uploads por defeito a 2MB.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não está a devolver o Ok o file que estou a manda é pequeno tem +- 500 kb

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

então vê lá bem a minha primeira questão das 3 perguntas..... parece-me que estás a tentar gravar a imagem numa pasta que não existe.

experimenta lá assim:

$uploaddir = "imgartigo/";     
$nomeFicheiro = $_FILES['file']['name'];     
$uploadfile = $uploaddir.$nomeFicheiro;     

if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))    {
                echo "File upload...<b>OK</b>";   
}
else {
               echo "<b>Ocorreu um erro a fazer o upload do ficheiro</b>";
}

  $insertSQL = sprintf("INSERT INTO produtos (artigo, descricao, img, preco, familia, nota) VALUES (%s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['artigo'], "text"),
                       GetSQLValueString($_POST['descricao'], "text"),
                       GetSQLValueString($nomeFicheiro, "text"),
                       GetSQLValueString($_POST['preco'], "text"),
                       GetSQLValueString($_POST['familia'], "text"),
                       GetSQLValueString($_POST['nota'], "text"));

Alterei o caminho para a pasta de destino, algumas pequenas correcções e uma mensagem de erro se não conseguir realizar o upload.

Vê lá se já funciona....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

  $insertSQL = sprintf("INSERT INTO produtos (artigo, descricao, img, preco, familia, nota) VALUES (%s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['artigo'], "text"),
                       GetSQLValueString($_POST['descricao'], "text"),
                       GetSQLValueString($nomeFicheiro, "text"),
                       GetSQLValueString($_POST['preco'], "text"),
                       GetSQLValueString($_POST['familia'], "text"),
                       GetSQLValueString($_POST['nota'], "text"));

aqui como é que escrevem a variavel $nomeFicheiro na bd ?? estou a ficar desesperado... se conseguisse por isto a escrever resolvia um grande problema...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não funciona porque?

$nomeFicheiro se só contêm o nome do ficheiro, ao listar os  valores da tabela produtos

tens que por isso como link

já para nao falar que isso apenas esta a escrever para a variavel $insertSQL essa string

depois tens que fazer o query a BD

reconheço ai code do dreamweaver, aproveitar os popups do dreamweaver para mexer em PHP e mySQL não te leva a aprender nada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok vou, vou refazer isto á lá páta, desde de que descobri q o dreamwaver fazia este tipo de coisas começei a utilizalo. mas em tempo fazia á mão.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok vou, vou refazer isto á lá páta, desde de que descobri q o dreamwaver fazia este tipo de coisas começei a utilizalo. mas em tempo fazia á mão.

qual é o teu host? eu também nao cosneguia porcausa do host, axo eu :O lol pk tambem nao conseguia instalar um smf :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se o code é apenas aquele, é o que eu digo esta incompleto

quanto ao host, deve se testar tudo localmente é mais rápido

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se o code é apenas aquele, é o que eu digo esta incompleto

quanto ao host, deve se testar tudo localmente é mais rápido

yah tens razao, mas nunca me dou ao trabalho lol de experimentar localmente, por acaso até dá mais trabalho  meter no host, mas sei la lol gosto de experimentar logo nos hosts para ver se vai dar o que eu quero...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu tenho estado a testar localmente, mas vou tentar no host

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já está a trabalhar... e agora como faço para remover as fotos que inseri na pasta do server ??

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acedes por FTP ou então crias um script em PHP que te permita remover.

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