Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

watt

fazer upload de imagens

Mensagens Recomendadas

watt    0
watt

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
entering    0
entering

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
David Pintassilgo    5
David Pintassilgo

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
watt    0
watt

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
deathseeker25    6
deathseeker25

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:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Ped@ntilva    0
Ped@ntilva

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..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Nazgulled    8
Nazgulled

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
watt    0
watt

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...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mad16v    0
mad16v

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mad16v    0
mad16v

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
watt    0
watt

  $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:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mad16v    0
mad16v

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
mad16v    0
mad16v

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....

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
watt    0
watt

  $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...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
entering    0
entering

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
watt    0
watt

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joninho    0
joninho

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
entering    0
entering

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

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
joninho    0
joninho

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...

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade