Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
A nova versão está aqui:
http://forum.imasters.com.br/index.php...mp;#entry693489
Olá galera, vou postar un scripts que criei baseado em algun scripts postados inclusive aqui no site, estes scripts fazem o upload de imagem, redimencionando as mesmas e gravando informações no banco de dados, o usuário pode escolher entre mandar as informações com uma imagem relacionada a estas informações, ou pode simplismente não enviar nenhuma imagem tendo como padrão uma outra imagem pré-definida, ou pode simplesmente listar as imagens que estão no servidor escolhendo o nome de uma dessas imagens já salvas no servidor.
functionsUpload.php
<?php function verifica_image($img) { // Verifica se o mime-type do arquivo é de imagem if(eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $img["type"])) { return (TRUE); } return (FALSE); }// fim verifica_image function verifica_extensao_image($img) { // Pega extensão do arquivo preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $img["name"], $ext); return ($ext[1]); }//fim verifica_extensao_imag function verifica_dimensao_image($img, $max_x, $max_y) { $dimensaoImage = getimagesize($img["tmp_name"]); $dimensao = ''; // Verifica largura if($dimensaoImage[0] > $dimensaoImage[1]) { if($dimensaoImage[0] > $max_x) { $dimensao = 'largura'; } } else { if($dimensaoImage[0] < $dimensaoImage[1]) { if($dimensaoImage[1] > $max_x) { $dimensao = 'altura'; } } else { if($dimensaoImage[0] == $dimensaoImage[1]) { if($dimensaoImage[0] > $max_x) { $dimensao = 'largura'; } } } } return ($dimensao); }//fim verifica_dimensao_image function reduz_imagem($img, $max_x, $max_y, $nome_foto) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); $image = imagecreatefromjpeg($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagejpeg($image_p, $nome_foto, 100); }//fim reduz_imagem?>
uploadImage.php
<?$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;$max_image_x = 128;$max_image_y = 80;$diretorio = 'imagens/'; //diretório onde esão as imagensif($arquivo){ $tamanho = getimagesize($arquivo["tmp_name"]); ini_set ("max_execution_time", 3600); // uma hora require_once "functionsUpload.php"; $err = FALSE; if(is_uploaded_file($arquivo['tmp_name'])) { if(verifica_image($arquivo)) { $tamanho = getimagesize($arquivo["tmp_name"]); $dimensiona = verifica_dimensao_image($arquivo, $max_image_x, $max_image_y); if($dimensiona != '') { if($dimensiona == 'altura') { $auxImage = $max_image_x; $max_image_x = $max_image_y; $max_image_y = $auxImage; } } else { $max_image_x = $tamanho[0]; $max_image_y = $tamanho[1]; } $nome_foto = ('imagem_' . time() . '.' . verifica_extensao_image($arquivo));// nome único para foto $endFoto = $diretorio . $nome_foto; if(reduz_imagem($arquivo['tmp_name'], $max_image_x, $max_image_y, $endFoto)) { $err = TRUE; } } }}?>
listaFotos.php
<table border="1" align="center"> <?phprequire_once "functionsUpload.php";$dir = 'imagens'; //diretório onde estão as imagens$handle=opendir($dir);$i=0;$j = 0;while ($file = readdir($handle)) {if (eregi("jpg$",$file) || eregi("gif$",$file) || eregi("png$",$file)){if($i == 0 || $j == 5){ $j = 0; echo('<tr>');}?><td align="center" valign="top"><img src=<?php echo($dir . '/' . $file) ?> width=128 height=96><br><font size=2><b><?php echo($file) ?></b></td><?phpif($j == 4){ echo('</tr>'); }$j=$j+1;$i=$i+1;};};closedir($handle);?> </table>
index.php
<?php$hostname = "localhost";$database = "testeupload";$username = "root";$password = "";$con = @mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR); header("Content-type: text/html; charset=iso-8859-1"); // corrigir acentuaçãofunction GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") { $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue; switch ($theType) { case "text": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "") ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL"; break; case "date": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue;}if(isset($_POST["insert"]) && ($_POST["insert"] == "form1")) {if($_FILES['foto'] == ''){ if(isset($_POST['foto']) && $_POST['foto'] != '') { $nome_foto = $_POST['foto']; } else { $nome_foto = 'fotoDefault.jpg'; } $err = TRUE;}else{ require_once "uploadImage.php";}if($err){$insertSQL = sprintf("INSERT INTO usuario (nome, email, foto) VALUES (%s, %s, '$nome_foto')", GetSQLValueString($_POST['nome'], "text"), GetSQLValueString($_POST['email'], "text")); mysql_select_db($database, $con); $Result1 = mysql_query($insertSQL, $con) or die(mysql_error()); if($Result1 > 0) { echo('<script> alert("Cadastro efetuado com sucesso!"); </script>'); }} $insertGoTo = "index.php"; if (isset($_SERVER['QUERY_STRING'])) { $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; $insertGoTo .= $_SERVER['QUERY_STRING']; } echo('<meta http-equiv="refresh" content="0;URL=' . $insertGoTo . '">');}?><html><head><title>Upload</title><script><!--function MM_validateForm() { //v4.0 var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments; for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]); if (val) { nm=val.name; if ((val=val.value)!="") { if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@'); if (p<1 || p==(val.length-1)) errors+='- '+nm+' e-mail não é válido.\n'; } else if (test!='R') { num = parseFloat(val); if (isNaN(val)) errors+='- '+nm+' must contain a number.\n'; if (test.indexOf('inRange') != -1) { p=test.indexOf(':'); min=test.substring(8,p); max=test.substring(p+1); if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n'; } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' Campo obrigatório.\n'; } } if (errors) alert('OCORRÊNCIAS DE ERROS:\n'+errors); document.MM_returnValue = (errors == '');}//-->function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x;}//--></script></head><body><?phpif((!isset($_GET['formulario'])) && (!isset($_GET['foto']))){?><table width="450" border="0" align="center"> <tr> <td align="center"><a href="index.php?formulario=1&img=1" title="Sem foto específica" target="_self">Inserir dados sem foto</a></td> <td align="center"><a href="index.php?formulario=1&img=2" title="Com foto específica" target="_self">Inserir dados com foto</a></td> <td align="center"><a href="listaFotos.php" title="Visualizar fotos do servidor" target="_blank">Ver fotos do servidor</a></td> </tr> <tr> <td colspan="3" align="justify"><br><br> <font face="Verdana, Arial, Helvetica, sans-serif" color="#996600">Nos links acima escolha inserir dados sem foto se queira inserir uma informação que não tenha foto específica, podendo para isto colocar uma foto que já esteja no servidor.<br><br> Para escolher uma foto que já esteja no servidor clique em ver fotos do servidor, copie o nome da foto escolhida, depois clique em inserir dados sem foto, então preencha os campos do formulário, colocando o nome da foto escolhida no campo foto.<br><br> Para inserir dados com uma foto específica, escolha inserir dados com foto, depois preencha o formulário completamente escolhendo no campo foto, qual foto queira e que está em seu disco.<br> Qualquer problema ou sugestão comunique-nos (Email).</font><br> </td> </tr></table><?php}else{if(isset($_GET['formulario']) && isset($_GET['img'])){if($_GET['img'] == 1){?><form action="index.php" method="post" name="form1" onSubmit="MM_validateForm('nome','','R','email','','RisEmail');return document.MM_returnValue"><? }else{if($_GET['img'] == 2){?><form action="index.php" method="post" enctype="multipart/form-data" name="form1" onSubmit="MM_validateForm('nome','','R','email','','RisEmail');return document.MM_returnValue"><?}}?> Nome: <input name="nome" type="text" maxlength="30"><br> Email: <input name="email" type="text" maxlength="30"><br><?phpif($_GET['img'] == 1){?> Foto: <input name="foto" type="text" maxlength="30"><br><?php }else{if($_GET['img'] == 2){?>Foto: <input type="file" name="foto" maxlength="15"><br><?php}}?> <input type="submit" name="Submit" value="Enviar"> <input type="hidden" name="insert" value="form1"></form><?php}}?></body></html>
Os scripts 'functionsphp' e 'uploadImage.php' saõ responsáveis pelos testes relativos a imagem fazendo upload e redimencionado as mesmas.
O script 'listaFotos.php' mostra as fotos de um diretório no servidor.
O script 'index.php' monta o formulário de acordo com a escolha do usuário, se ele vai enviar uma imagem ou não.
Para testar o script crie um banco de dado mysql com nome 'testeupload':
CREATE DATABASE testeupload;
Insira uma tabela com nome usuario :
CREATE TABLE usuario ( id tinyint(8) NOT NULL auto_increment, nome varchar(30) NOT NULL default '', email varchar(30) NOT NULL default '', foto varchar(15) default NULL, PRIMARY KEY (id)) TYPE=MyISAM;
Configure a conexão do banco de dados no arquivo index.php:
$hostname = "localhost";$database = "testeupload";$username = "root";$password = "";
Configure o diretório das imagens no uploadImage.php:
$diretorio = 'imagens/';
Configure o diretório das imagens no listaFotos.php:
$dir = 'imagens';
Não esqueça de dar permissão de escrita no diretório das imagens.
Bom acredito que vão conseguir usar, caso queiram melhorar os scripts fiquem a vontade, modifiquem e usem a vontade, críticas e sugestões são muito bem vindas.O script index.'php' faz a montagem do formulário e inclusão das informações no bd, o formulário é bem básico, pois foi criado só para demonstração.
Ola...aqui esta acontecendo um erro ele eu nao consigo enviar fotos no formato GIF PNG nenhuma outra citada no codigo a cima!!! o que acontece você pode me ajudar nesse erro?pois alguns usuarios vao querer enviar fotos em outros formatos!!!
>
Ola...
aqui esta acontecendo um erro ele eu nao consigo enviar fotos no formato GIF PNG nenhuma outra citada no codigo a cima!!! o que acontece você pode me ajudar nesse erro?
pois alguns usuarios vao querer enviar fotos em outros formatos!!!
Olá 'bittencourtal', desculpe a demora em responder mas andei meio ocupado, enfim, algum tempo.
Vou colocar novamente o script já alterado para inserção de imagens com extensão png, gif e jpg, mas primeiro algumas considerações; para se fazer upload de imagens o seu servidor deve ter suporte a biblioteca GD, e você deve verificar se a biblioteca instalada dá suporte as extensões que você quer usar, veja esta nota do manual do php(http://br2.php.net/manual/pt_BR/function.imagegif.php):
Nota: Já que todo o suporte GIF foi removido da biblioteca GD na versão 1.6, esta função não esta disponível se você esta usando esta versão da biblioteca GD. O suporte é esperado para retornar em uma versão subsequente ao lançamento do suporte GIF na biblioteca GD no meio de 2004. Para maiores informações veja o site do projeto GD Project.
mas vamos ao código modificado:
Editado: 16/10/06 - reformulando suporte a upload de imagens gifs
functionsUpload.php
<?php function verifica_image($img) { // Verifica se o mime-type do arquivo é de imagem if(eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $img["type"])) { return (TRUE); } return (FALSE); }// fim verifica_image function verifica_extensao_image($img) { // Pega extensão do arquivo preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $img["name"], $ext); return ($ext[1]); }//fim verifica_extensao_imag function verifica_dimensao_image($img, $max_x, $max_y) { $dimensaoImage = getimagesize($img["tmp_name"]); $dimensao = ''; // Verifica largura if($dimensaoImage[0] > $dimensaoImage[1]) { if($dimensaoImage[0] > $max_x) { $dimensao = 'largura'; } } else { if($dimensaoImage[0] < $dimensaoImage[1]) { if($dimensaoImage[1] > $max_x) { $dimensao = 'altura'; } } else { if($dimensaoImage[0] == $dimensaoImage[1]) { if($dimensaoImage[0] > $max_x) { $dimensao = 'largura'; } } } } return ($dimensao); }//fim verifica_dimensao_image // Código tirado de [http://phpweb.hostnet.com.br/manual/it/function.imagecreatefromgif.php](http://phpweb.hostnet.com.br/manual/it/function.imagecreatefromgif.php) function gif2jpeg($p_fl, $p_new_fl='', $bgcolor=false, $imgge , $x, $y, $xx, $yy) { //list($wd, $ht, $tp, $at)=getimagesize($p_fl); $img_src=imagecreatefromgif($p_fl); //$img_dst=imagecreatetruecolor($wd,$ht); $clr['red']=255; $clr['green']=255; $clr['blue']=255; if(is_array($bgcolor)) { $clr=$bgcolor; } $kek=imagecolorallocate($imgge, $clr['red'], $clr['green'], $clr['blue']); imagefill($imgge,0,0,$kek); imagecopyresampled($imgge, $img_src, 0, 0, 0, 0, $x, $y, $xx, $yy); $draw=true; if(strlen($p_new_fl)>0) { if($hnd=fopen($p_new_fl,'w')) { $draw=false; fclose($hnd); } } if(true==$draw) { header("Content-type: image/jpeg"); $im = imagejpeg($imgge); } else { $im = imagejpeg($imgge, $p_new_fl); } imagedestroy($imgge); imagedestroy($img_src); return $im; } // Fim gif2jpeg function reduz_imagem($img, $max_x, $max_y, $nome_foto, $extensaoo) { //pega o tamanho da imagem ($original_x, $original_y) list($width, $height) = getimagesize($img); $original_x = $width; $original_y = $height; // se a largura for maior que altura if($original_x > $original_y) { $porcentagem = (100 * $max_x) / $original_x; } else { $porcentagem = (100 * $max_y) / $original_y; } $tamanho_x = $original_x * ($porcentagem / 100); $tamanho_y = $original_y * ($porcentagem / 100); $image_p = imagecreatetruecolor($tamanho_x, $tamanho_y); if($extensaoo == 'jpeg' || $extensaoo == 'jpg') { if (function_exists('imagejpeg')) { $image = imagecreatefromjpeg($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagejpeg($image_p, $nome_foto, 100); } else { echo('<script> alert("Sem suporte para este tipo de imagem - ' . $extensaoo . ', falha no cadastro!!"); </script>'); return false; } } else { if($extensaoo == 'png') { if (function_exists('imagepng')) { $image = imagecreatefrompng($img); imagealphablending($image_p, false); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); imagesavealpha($image_p, true); return imagejpeg($image_p, $nome_foto); } else { echo('<script> alert("Sem suporte para este tipo de imagem - ' . $extensaoo . ', falha no cadastro!!"); </script>'); return false; } } else { if($extensaoo == 'gif') { if (function_exists('imagegif')) { $image = imagecreatefromgif($img); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height); return imagegif($image_p, $nome_foto, 100); } else { $clr['red']=255; $clr['green']=255; $clr['blue']=255; $imag = gif2jpeg($img, $nome_foto, $clr, $image_p, $tamanho_x, $tamanho_y, $width, $height); if($imag) { return $imag; } else { echo('<script> alert("Sem suporte para este tipo de imagem - ' . $extensaoo . ', falha no cadastro!!"); </script>'); } } } } } }//fim reduz_imagem ?>uploadImage.php
<?$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;$max_image_x = 128;$max_image_y = 80;$diretorio = 'imagens/'; //diretório onde esão as imagensif($arquivo){ $tamanho = getimagesize($arquivo["tmp_name"]); ini_set ("max_execution_time", 3600); // uma hora require_once "functionsUpload.php"; $err = FALSE; if(is_uploaded_file($arquivo['tmp_name'])) { if(verifica_image($arquivo)) { $tamanho = getimagesize($arquivo["tmp_name"]); $dimensiona = verifica_dimensao_image($arquivo, $max_image_x, $max_image_y); if($dimensiona != '') { if($dimensiona == 'altura') { $auxImage = $max_image_x; $max_image_x = $max_image_y; $max_image_y = $auxImage; } } else { $max_image_x = $tamanho[0]; $max_image_y = $tamanho[1]; } $nome_foto = ('imagem_' . time() . '.' . verifica_extensao_image($arquivo));// nome único para foto $extensao = strtolower(verifica_extensao_image($arquivo)); $endFoto = $diretorio . $nome_foto; if(reduz_imagem($arquivo['tmp_name'], $max_image_x, $max_image_y, $endFoto, $extensao)) { $err = TRUE; } } }}?>listaFotos.php
<table border="1" align="center"><?phprequire_once "functionsUpload.php";$dir = 'imagens'; //diretório onde estão as imagens$handle=opendir($dir);$i=0;$j = 0;while ($file = readdir($handle)) {if (eregi("jpg$",$file) || eregi("gif$",$file) || eregi("png$",$file)){if($i == 0 || $j == 5){ $j = 0; echo('<tr>');}?><td align="center" valign="top"><img src=<?php echo($dir . '/' . $file) ?> width=128 height=96><br><font size=2><b><?php echo($file) ?></b></td><?phpif($j == 4){ echo('</tr>'); }$j=$j+1;$i=$i+1;};};//Alterado 28/12/2006if($j <4){ echo('</tr>');}//Alterado 28/12/2006closedir($handle);?></table>index.php
<?php$hostname = "localhost";$database = "testeupload";$username = "root";$password = "";$con = @mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);header("Content-type: text/html; charset=iso-8859-1"); // corrigir acentuaçãofunction GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = ""){ $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue; switch ($theType) { case "text": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "long": case "int": $theValue = ($theValue != "") ? intval($theValue) : "NULL"; break; case "double": $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL"; break; case "date": $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; break; case "defined": $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; break; } return $theValue;}if(isset($_POST["insert"]) && ($_POST["insert"] == "form1")) {if($_FILES['foto'] == ''){ if(isset($_POST['foto']) && $_POST['foto'] != '') { $nome_foto = $_POST['foto']; } else { $nome_foto = 'fotoDefault.jpg'; } $err = TRUE;}else{ require_once "uploadImage.php";}if($err){$insertSQL = sprintf("INSERT INTO usuario (nome, email, foto) VALUES (%s, %s, '$nome_foto')", GetSQLValueString($_POST['nome'], "text"), GetSQLValueString($_POST['email'], "text")); mysql_select_db($database, $con); $Result1 = mysql_query($insertSQL, $con) or die(mysql_error()); if($Result1 > 0) { echo('<script> alert("Cadastro efetuado com sucesso!"); </script>'); }} $insertGoTo = "index.php"; if (isset($_SERVER['QUERY_STRING'])) { $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?"; $insertGoTo .= $_SERVER['QUERY_STRING']; } echo('<meta http-equiv="refresh" content="0;URL=' . $insertGoTo . '">');}?><html><head><title>Upload</title><script><!--function MM_validateForm() { //v4.0 var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments; for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]); if (val) { nm=val.name; if ((val=val.value)!="") { if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@'); if (p<1 || p==(val.length-1)) errors+='- '+nm+' e-mail não é válido.\n'; } else if (test!='R') { num = parseFloat(val); if (isNaN(val)) errors+='- '+nm+' must contain a number.\n'; if (test.indexOf('inRange') != -1) { p=test.indexOf(':'); min=test.substring(8,p); max=test.substring(p+1); if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n'; } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' Campo obrigatório.\n'; } } if (errors) alert('OCORRÊNCIAS DE ERROS:\n'+errors); document.MM_returnValue = (errors == '');}//-->function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x;}//--></script></head><body><?phpif((!isset($_GET['formulario'])) && (!isset($_GET['foto']))){?><table width="450" border="0" align="center"> <tr> <td align="center"><a href="index.php?formulario=1&img=1" title="Sem foto específica" target="_self">Inserir dados sem foto</a></td> <td align="center"><a href="index.php?formulario=1&img=2" title="Com foto específica" target="_self">Inserir dados com foto</a></td> <td align="center"><a href="listaFotos.php" title="Visualizar fotos do servidor" target="_blank">Ver fotos do servidor</a></td> </tr> <tr> <td colspan="3" align="justify"><br><br> <font face="Verdana, Arial, Helvetica, sans-serif" color="#996600">Nos links acima escolha inserir dados sem foto se queira inserir uma informação que não tenha foto específica, podendo para isto colocar uma foto que já esteja no servidor.<br><br> Para escolher uma foto que já esteja no servidor clique em ver fotos do servidor, copie o nome da foto escolhida, depois clique em inserir dados sem foto, então preencha os campos do formulário, colocando o nome da foto escolhida no campo foto.<br><br> Para inserir dados com uma foto específica, escolha inserir dados com foto, depois preencha o formulário completamente escolhendo no campo foto, qual foto queira e que está em seu disco.<br> Qualquer problema ou sugestão comunique-nos (Email).</font><br> </td> </tr></table><?php}else{if(isset($_GET['formulario']) && isset($_GET['img'])){if($_GET['img'] == 1){?><form action="index.php" method="post" name="form1" onSubmit="MM_validateForm('nome','','R','email','','RisEmail');return document.MM_returnValue"><?}else{if($_GET['img'] == 2){?><form action="index.php" method="post" enctype="multipart/form-data" name="form1" onSubmit="MM_validateForm('nome','','R','email','','RisEmail');return document.MM_returnValue"><?}}?> Nome: <input name="nome" type="text" maxlength="30"><br> Email: <input name="email" type="text" maxlength="30"><br><?phpif($_GET['img'] == 1){?> Foto: <input name="foto" type="text" maxlength="30"><br><?php}else{if($_GET['img'] == 2){?>Foto: <input type="file" name="foto" maxlength="15"><br><?php}}?> <input type="submit" name="Submit" value="Enviar"> <input type="hidden" name="insert" value="form1"></form><?php}}?></body></html>
As explicações de como montar o BD e testar os scripts são as mesmas do primeiro post, tendo somente uma alteração a ser feita, coloque o tamanho do nome da foto no BD para 25:
CREATE TABLE `usuario` (
`id` tinyint(8) NOT NULL auto_increment,
`nome` varchar(30) NOT NULL default '',
`email` varchar(30) NOT NULL default '',
`foto` varchar(25) default NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM;
um abraço e espero que sirva.
Ola muito obrigado ai desculpe a demora a responder eu ja tinha visto o seu posto logo no dia que você respondeu testei em seguida e deu tudo certo não respondi por conta de tempo tambem f*** pra caramba to trampando dia a noite heheheMais então tem como limitar o tamanho da imagem em Kbps?E se quizer enviar mais de uma foto, é muito complicado?curti muito esse seu script funciona que é uma beleza =]Valeu!!!
esse script já gera thumbs das imagens??
bitteoncoural
Testa isso aqui no arquivo que sobe a imagem para o servidor:
if($imagem_size > 4000000) { /verifica o tamanho da imagem enviada /$erros++;$errors = $errors."O tamanho do arquivo é maior que 40 K<br>";}
Vo tenta aqui "dvdddd" :D
Valeu =]
Ola amigo aqui em casa me retorno esse erro.
Warning: opendir(imagem): failed to open dir: Invalid argument in c:\appserv\www\imagem\listafotos.php on line 5Warning: readdir(): supplied argument is not a valid Directory resource in c:\appserv\www\imagem\listafotos.php on line 8Warning: closedir(): supplied argument is not a valid Directory resource in c:\appserv\www\imagem\listafotos.php on line 29
Sera que você poderia me ajudar.
Obrigado.
como o amigo bitencourtal perguntou..
Tem como subir mais de uma foto?
Fico no aguardo!
hcar estou precisando de uma ajudinha... eu preciso de um script que mande não só foto, mas tb arquivos zipados (zip, rar...) é isso... se você pueder me ajudar ficarei muito grato!!
t+ http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
>
Ola amigo aqui em casa me retorno esse erro.
Warning: opendir(imagem): failed to open dir: Invalid argument in c:\appserv\www\imagem\listafotos.php on line 5Warning: readdir(): supplied argument is not a valid Directory resource in c:\appserv\www\imagem\listafotos.php on line 8Warning: closedir(): supplied argument is not a valid Directory resource in c:\appserv\www\imagem\listafotos.php on line 29Sera que você poderia me ajudar.Obrigado.
verifique a permissão do diretório, verifique se está correto o caminho também, qualquer coisa posta de novo.
>
como o amigo bitencourtal perguntou..
Tem como subir mais de uma foto?
Fico no aguardo!
Tem como subir mais fotos, mas precisa adaptar o script para isto, verifique, no fórum mesmo tem scripts que sobe mais fotos, tenta implementar, estou meio ocupado no momento mas, se ninguem implementar isto para o script, logo que desocupar tento implementar mais esta função e posto novamente, Ok?
>
hcar estou precisando de uma ajudinha... eu preciso de um script que mande não só foto, mas tb arquivos zipados (zip, rar...) é isso... se você pueder me ajudar ficarei muito grato!!
t+ http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
Conrado no fórum tem alguns scripts que mandam outros arquivos, veja:
http://forum.imasters.com.br/index.php?showtopic=124250
http://forum.imasters.com.br/index.php?showtopic=151216
Dê uma olhada, se não servir comece a implementar um e crie um tópico pra turma do fórum colaborar, abraços.
Bem pessoal , sobrou um pouco de tempo por aqui e então voltei aqui para completar o script e colocar a função de envio para multiplas imagens, bom , não vou colocar os arquivos aqui para copiarem, mas farei melhor, colocarei no ar para que vejam o script funcionando, e colocarei também um link para baixarem os arquivos, as explicações estarão nos próprio scripts, adaptem para uso como quiserem, os arquivos não foram testados suficiententemente, portanto testar seria bom para que não tenham surpresas, erros, bugs, avisem aqui no fórum para que seja corrigido, ou então postem a correção, abraços a todos:
Muito bom!
>
Bem pessoal , sobrou um pouco de tempo por aqui e então voltei aqui para completar o script e colocar a função de envio para multiplas imagens, bom , não vou colocar os arquivos aqui para copiarem, mas farei melhor, colocarei no ar para que vejam o script funcionando, e colocarei também um link para baixarem os arquivos, as explicações estarão nos próprio scripts, adaptem para uso como quiserem, os arquivos não foram testados suficiententemente, portanto testar seria bom para que não tenham surpresas, erros, bugs, avisem aqui no fórum para que seja corrigido, ou então postem a correção, abraços a todos:
****************************************
Editado - 04/12/2006
Incluído suporte a escolha de ordem das cinco primeiras imagens
==================
Editado - 08/12/2006
Agora já é um sistema de administração de notícias.
Incluir, excluir, alterar notícias com ou sem imagens.
O sistema envia notícias sem imagens vinculadas, notícias com imagens vinculadas ou envia somente imagens sem uma notícia vinculada. É utilizado ajax.
Foi novamente postado, veja:
*******************************************
ola , estou com um problema aki, Quando eu clico em "Ver fotos do servidor", aparece só as tabelas e o nome das fotos mais nao aparece as imagens.Na pagina listaFotos.php eu colokei o caminho aonde estao as imagens no meu servidor mais nao aparece, oke pode ser????vlwsssss fora isso o resto esta otimo. Otimo script.
ola , estou com um problema aki, Quando eu clico em "Ver fotos do servidor", aparece só as tabelas e o nome das fotos mais nao aparece as imagens.Na pagina listaFotos.php eu colokei o caminho aonde estao as imagens no meu servidor mais nao aparece, oke pode ser????vlwsssss fora isso o resto esta otimo. Otimo script.
como você colocou o caminho das imagens
$dir = 'c:/Arquivos de programas/vertrigoServ/www/layout2/admin/upload/imagens'; //diretório onde estão as imagensesta correto???
$dir = 'c:/Arquivos de programas/vertrigoServ/www/layout2/admin/upload/imagens'; //diretório onde estão as imagensesta correto???
Tenta colocar o caminho a partir de onde está o seu script, por exemplo: Se o listarFotos.php estiver na pasta admin, coloque $dir = 'upload/imagens';
Tem alguem ai que possa me passar ele? Pois o link para downlad dele não esta abrindo, obrigado.
Tem alguem ai que possa me passar ele? Pois o link para downlad dele não esta abrindo, obrigado.
Os arquivos que você quer, são os apresentados acima ou o link do outro post, que é a adaptação deste, e testei o link está ok.Aqui os arquivos para baixarem
Vlww, era para baixar mesmo que não estava dando, agora deu normalmente ^^. VLWW.^^
http://forum.imasters.com.br/public/style_emoticons/default/clap.gif MEUS PARABÉNS!!!!!!!!!!
Sem palavras.. Script SHOW!!!! Funciona certinho!
Procurava isso fazia tempo! Só tenho que agradecer!!
VALEUUUUUUUUUUU!!
Olá,
Primeiramente, parabéns ao hcar pelo código. Funciona muito bem.
Entretanto estou tentando fazer umas modificações para que seja possível usar um formulário em Flash, como tem neste tutorial.
Tanto este código, como o código do tutorial funcionam, mas separadamente. O que eu queria agora era usar o formulário do flash com este código PHP, que tem muito mais funções.
Como o PHP do tutorial, que funciona perfeitamente, tem apenas isto:
<?php$dir = "./imagens/";$file = $_FILES["Filedata"];echo move_uploaded_file($file["tmp_name"], $dir . "/" . $file["name"]);?>Eu pensei que bastava fazer uma pequena mudança no arquivo *uploadImage.php*.Tirando isso:
$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;Mudando para:
$arquivo = isset($_FILES["Filedata"]) ? $_FILES["Filedata"] : FALSE;Mas não deu. Simplesmente não faz nada, apesar do SWF dizer que o arquivo foi enviado.
O autor deste código ou outra pessoa sabe dizer o que é preciso fazer?
Olá!
Muito bom msm o script, tudo funcionando direitinho.
Agora, como eu faço para excluir uma imagem no banco de dados?
Quen puder me ajudar, agradeço desde já.
Vlw.
>
Olá galera, vou postar un scripts que criei baseado em algun scripts postados inclusive aqui no site, estes scripts fazem o upload de imagem, redimencionando as mesmas e gravando informações no banco de dados, o usuário pode escolher entre mandar as informações com uma imagem relacionada a estas informações, ou pode simplismente não enviar nenhuma imagem tendo como padrão uma outra imagem pré-definida, ou pode simplesmente listar as imagens que estão no servidor escolhendo o nome de uma dessas imagens já salvas no servidor.
functionsUpload.php
<?php
function verifica_image($img)
{
// Verifica se o mime-type do arquivo é de imagem
if(eregi("^image\/(pjpeg|jpeg|png|gif|bmp)$", $img["type"]))
{
return (TRUE);
}
return (FALSE);
}// fim verifica_image
function verifica_extensao_image($img)
{
// Pega extensão do arquivo
preg_match("/\.(gif|bmp|png|jpg|jpeg){1}$/i", $img["name"], $ext);
return ($ext[1]);
}//fim verifica_extensao_imag
function verifica_dimensao_image($img, $max_x, $max_y)
{
$dimensaoImage = getimagesize($img["tmp_name"]);
$dimensao = '';
// Verifica largura
if($dimensaoImage[0] > $dimensaoImage[1])
{
if($dimensaoImage[0] > $max_x)
{
$dimensao = 'largura';
}
}
else
{
if($dimensaoImage[0] < $dimensaoImage[1])
{
if($dimensaoImage[1] > $max_x)
{
$dimensao = 'altura';
}
}
else
{
if($dimensaoImage[0] == $dimensaoImage[1])
{
if($dimensaoImage[0] > $max_x)
{
$dimensao = 'largura';
}
}
}
}
return ($dimensao);
}//fim verifica_dimensao_image
function reduz_imagem($img, $max_x, $max_y, $nome_foto)
{
//pega o tamanho da imagem ($original_x, $original_y)
list($width, $height) = getimagesize($img);
$original_x = $width;
$original_y = $height;
// se a largura for maior que altura
if($original_x > $original_y) {
$porcentagem = (100 * $max_x) / $original_x;
}
else {
$porcentagem = (100 * $max_y) / $original_y;
}
$tamanho_x = $original_x * ($porcentagem / 100);
$tamanho_y = $original_y * ($porcentagem / 100);
$image_p = imagecreatetruecolor($tamanho_x, $tamanho_y);
$image = imagecreatefromjpeg($img);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);
return imagejpeg($image_p, $nome_foto, 100);
}//fim reduz_imagem
?>
uploadImage.php
<?
$arquivo = isset($_FILES["foto"]) ? $_FILES["foto"] : FALSE;
$max_image_x = 128;
$max_image_y = 80; $tamanho = getimagesize($arquivo["tmp_name"]);
ini_set ("max_execution_time", 3600); // uma hora
require_once "functionsUpload.php";
$err = FALSE;
if(is_uploaded_file($arquivo['tmp_name']))
{
if(verifica_image($arquivo))
{
$tamanho = getimagesize($arquivo["tmp_name"]);
$dimensiona = verifica_dimensao_image($arquivo, $max_image_x, $max_image_y);
if($dimensiona != '')
{
if($dimensiona == 'altura')
{
$auxImage = $max_image_x;
$max_image_x = $max_image_y;
$max_image_y = $auxImage;
}
}
else
{
$max_image_x = $tamanho[0];
$max_image_y = $tamanho[1];
}
$nome_foto = ('imagem_' . time() . '.' . verifica_extensao_image($arquivo));// nome único para foto
$endFoto = $diretorio . $nome_foto;
if(reduz_imagem($arquivo['tmp_name'], $max_image_x, $max_image_y, $endFoto))
{
$err = TRUE;
}
}
}
}
?>
listaFotos.php
<table border="1" align="center">
<?php
require_once "functionsUpload.php";
$dir = 'imagens'; //diretório onde estão as imagens
$handle=opendir($dir);
$i=0;
$j = 0;
while ($file = readdir($handle)) {
if (eregi("jpg$",$file) || eregi("gif$",$file) || eregi("png$",$file)){
if($i == 0 || $j == 5)
{
$j = 0;
echo('<tr>');
}
?>
<td align="center" valign="top">
<img src=<?php echo($dir . '/' . $file) ?> width=128 height=96>
<br><font size=2><b><?php echo($file) ?></b>
</td>
<?php
if($j == 4)
{
echo('</tr>');
}
$j=$j+1;
$i=$i+1;
};
};
closedir($handle);
?>
</table>
index.php
<?php
$hostname = "localhost";
$database = "testeupload";
$username = "root";
$password = "";
$con = @mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
header("Content-type: text/html; charset=iso-8859-1"); // corrigir acentuação
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
if(isset($_POST["insert"]) && ($_POST["insert"] == "form1")) {
if($_FILES['foto'] == '') if(isset($_POST['foto']) && $_POST['foto'] != '')
{
$nome_foto = $_POST['foto'];
}
else
{
$nome_foto = 'fotoDefault.jpg';
}
$err = TRUE;
} require_once "uploadImage.php";
}
if($err)$insertSQL = sprintf("INSERT INTO usuario (nome, email, foto) VALUES (%s, %s, '$nome_foto')",
GetSQLValueString($_POST['nome'], "text"),
GetSQLValueString($_POST['email'], "text"));
mysql_select_db($database, $con);
$Result1 = mysql_query($insertSQL, $con) or die(mysql_error());
if($Result1 > 0)
{
echo('<script> alert("Cadastro efetuado com sucesso!"); </script>');
}
}
$insertGoTo = "index.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
echo('<meta http-equiv="refresh" content="0;URL=' . $insertGoTo . '">');
}
?>
<html>
<head>
<title>Upload</title>
<script>
<!--
function MM_validateForm() { //v4.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' e-mail não é válido.\n';
} else if (test!='R') { num = parseFloat(val);
if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' Campo obrigatório.\n'; }
} if (errors) alert('OCORRÊNCIAS DE ERROS:\n'+errors);
document.MM_returnValue = (errors == '');
}
//-->
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
//-->
</script>
</head>
<body>
<?php
if((!isset($_GET['formulario'])) && (!isset($_GET['foto'])))
{
?>
<table width="450" border="0" align="center">
<tr>
<td align="center"><a href="index.php?formulario=1&img=1" title="Sem foto específica" target="_self">Inserir dados sem foto</a></td>
<td align="center"><a href="index.php?formulario=1&img=2" title="Com foto específica" target="_self">Inserir dados com foto</a></td>
<td align="center"><a href="listaFotos.php" title="Visualizar fotos do servidor" target="_blank">Ver fotos do servidor</a></td>
</tr>
<tr>
<td colspan="3" align="justify"><br><br>
<font face="Verdana, Arial, Helvetica, sans-serif" color="#996600">Nos links acima escolha inserir dados sem foto se queira inserir uma informação que não tenha foto específica, podendo para isto colocar uma foto que já esteja no servidor.<br><br>
Para escolher uma foto que já esteja no servidor clique em ver fotos do servidor, copie o nome da foto escolhida, depois clique em inserir dados sem foto, então preencha os campos do formulário, colocando o nome da foto escolhida no campo foto.<br><br>
Para inserir dados com uma foto específica, escolha inserir dados com foto, depois preencha o formulário completamente escolhendo no campo foto, qual foto queira e que está em seu disco.<br>
Qualquer problema ou sugestão comunique-nos (Email).</font><br>
</td>
</tr>
</table>
<?php
}
else
{
if(isset($_GET['formulario']) && isset($_GET['img']))
{
if($_GET['img'] == 1)
{
?>
<form action="index.php" method="post" name="form1" onSubmit="MM_validateForm('nome','','R','email','','RisEmail');return document.MM_returnValue">
<?
}
else
{
if($_GET['img'] == 2)
{
?>
<form action="index.php" method="post" enctype="multipart/form-data" name="form1" onSubmit="MM_validateForm('nome','','R','email','','RisEmail');return document.MM_returnValue">
<?
}
}
?>
Nome: <input name="nome" type="text" maxlength="30"><br>
Email: <input name="email" type="text" maxlength="30"><br>
<?php
if($_GET['img'] == 1)
{
?>
Foto: <input name="foto" type="text" maxlength="30"><br>
<?php
}
else
{
if($_GET['img'] == 2)
{
?>
Foto: <input type="file" name="foto" maxlength="15"><br>
<?php
}
}
?>
<input type="submit" name="Submit" value="Enviar">
<input type="hidden" name="insert" value="form1">
</form>
<?php
}
}
?>
</body>
</html>
Os scripts 'functionsphp' e 'uploadImage.php' saõ responsáveis pelos testes relativos a imagem fazendo upload e redimencionado as mesmas.
O script 'listaFotos.php' mostra as fotos de um diretório no servidor.
O script 'index.php' monta o formulário de acordo com a escolha do usuário, se ele vai enviar uma imagem ou não.
Para testar o script crie um banco de dado mysql com nome 'testeupload':
CREATE DATABASE testeupload;
Insira uma tabela com nome usuario :
CREATE TABLE `usuario` (
`id` tinyint(8) NOT NULL auto_increment,
`nome` varchar(30) NOT NULL default '',
`email` varchar(30) NOT NULL default '',
`foto` varchar(15) default NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM;
Configure a conexão do banco de dados no arquivo index.php:
$hostname = "localhost";
$database = "testeupload";
$username = "root";
$password = "";
Configure o diretório das imagens no uploadImage.php:
$diretorio = 'imagens/';
Configure o diretório das imagens no listaFotos.php:
$dir = 'imagens';
Não esqueça de dar permissão de escrita no diretório das imagens.
Bom acredito que vão conseguir usar, caso queiram melhorar os scripts fiquem a vontade, modifiquem e usem a vontade, críticas e sugestões são muito bem vindas.O script index.'php' faz a montagem do formulário e inclusão das informações no bd, o formulário é bem básico, pois foi criado só para demonstração.
Por favor,
como eu faço para excluir uma imagem no banco de dados?
e como podeira fazer para ampliar a imagem no ListaFotos.php?
O resto ta funcionaod direitinho.
Obrigado.
sou iniciante..
como ficaria o index desse codigo..
algum pode me postar.
>
Bem pessoal , sobrou um pouco de tempo por aqui e então voltei aqui para completar o script e colocar a função de envio para multiplas imagens, bom , não vou colocar os arquivos aqui para copiarem, mas farei melhor, colocarei no ar para que vejam o script funcionando, e colocarei também um link para baixarem os arquivos, as explicações estarão nos próprio scripts, adaptem para uso como quiserem, os arquivos não foram testados suficiententemente, portanto testar seria bom para que não tenham surpresas, erros, bugs, avisem aqui no fórum para que seja corrigido, ou então postem a correção, abraços a todos:
aqui o script em funcionamento
Aqui os arquivos para baixarem
olá tira lá aquele banner não faz sentido estar lá não consegui testar nada
ei cara, você tem essis arquivosai zipado nao?grato abraços