Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

will_pHp

upload múltiplo de imagens com thumb e descrição

Recommended Posts

este script faz upload múltiplo de jpg, jpeg, gif e png, qualquer problema basta deixar uma mensagem que respondo todas

 

<?php
include("config.php");
  
if($_GET['action']=='foto'){

$num 	= $_POST['id'];
$campos = $_POST['campos'];

$dir = "downloads/$num";
//tamanhos para criar as thumbs
$largura_final = 160;
$altura_final  = 110;

@mkdir($dir);

if ($handle = @opendir($dir)) {

while (false !== ($filez = readdir($handle))){

if ($filez != "." && $filez != ".."){

$filez  = substr($filez,0,-4);
$filez2.="$filez-*-";}}
$filez2 = substr($filez2, 0, -3);
$filez3 = explode("-*-", $filez2);

natsort ($filez3);

$quanti = count($filez3);

$quanti--;

$y = $filez3[$quanti];
$y = substr($y, -2);

closedir($handle);}

$f_name = $_FILES['file']['name'];
$f_tmp  = $_FILES['file']['tmp_name'];
$f_type = $_FILES['file']['type'];

$cont=0;

$p = $y;

$desc = $_POST['desc'];

for($i=0;$i<$campos;$i++){

$name  = $f_name[$i];
$file  = explode(".",$name);
$filec = count($file);
$filec = $filec-1;
$file  = $file[$filec];
$descr = $desc[$i];
$patha = $dir."$num"."$name";
$nome  = "$num"."$name";

if ( ($name!="") and (is_file($f_tmp[$i]))){
	if ($cont==0){
	  echo "<b>Arquivo(s) enviados:<br /></b>";
	}

	  echo $patha." - ";

	  $up = move_uploaded_file($f_tmp[$i], $patha);
	  
	  //criar thumb a função verifica a extensão do arquivo e cria a thumb a partir disso
	  if(preg_match("/.jpg/i", "$nome")){
	  $format = 'image/jpeg';
		}
		if (preg_match("/.gif/i", "$nome")){
	  $format = 'image/gif';
		}
		if(preg_match("/.png/i", "$nome")){
	  $format = 'image/png';
		}
		if($format!=''){
	  $tamanho = getimagesize($dir.$nome);
	  $largura_fonte  = $tamanho[0];
	  $altura_fonte   = $tamanho[1];

	  switch($format){
	  case 'image/jpeg':
		  $source = imagecreatefromjpeg($dir.$nome);
		  break;
		  case 'image/gif';
		  $source = imagecreatefromgif($dir.$nome);
		  break;
		  case 'image/png':
		  $source = imagecreatefrompng($dir.$nome);
		  break;
	  }
	  $nome_thumb	 = substr($nome,0,strpos($nome,"."))."_thumb".substr($nome,strpos($nome,"."));
	  
	  $imagem_destino = imagecreatetruecolor($largura_final,$altura_final);
	  imagealphablending($imagem_destino, false);
	  imagecopyresized($imagem_destino, $source, 0, 0, 0, 0, $largura_final, $altura_final, $largura_fonte, $altura_fonte);
	  @imagejpeg($imagem_destino, $dir.$nome_thumb, 70);
		  imagedestroy($source);
		  imagedestroy($imagem_destino);
	  }
	  //fim do thumb

		if ($up==true):
			echo  "<i>Enviado!</i>";
			  $cont++;
				$qry = mysql_query("INSERT INTO sua_tabela (nome,foto,thumb) VALUES ('$descr','$nome','$nome_thumb')");

		else:
			echo "<i>Falhou!</i>";
		endif;

	  echo "<br />";
  }
}

echo ($cont!=0) ? "<script>alert(\"Total de arquivos enviados: $cont\");
	   location.href=\"index.php\"</script>": "<script>alert(\"Nenhum arquivo foi enviado!\");
	   location.href=\"index.php\"</script>";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara muito bom... http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

Só uma coisinha que você deveria fazer: liberar espaço na memórica com

imagedestroy($source);
imagedestroy($imagem_destino);

Compartilhar este post


Link para o post
Compartilhar em outros sites

é cara eu ja tinha sacado isso a um tempo, so q as vezes sou tomado pela preguiça, meu mal, mais valeu mesmo pela dica, ja inclui no script, se precisar d ajuda em algo so da um tok, vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como seria o form de envio para esse exemplo?

Valeu e fica na paz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como seria o form de envio para esse exemplo?

Valeu e fica na paz.

 

você pode fazer da seguinte forma, como eu usei:

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

<?php
$a  = 1;
$c  = $_GET['cps'];

while($a<=$_GET['cps']){
echo "
<label>Nome <i>$a</i>:</label>
<input name=\"nome$a\" type=\"text\" size=\"88\" />
<label>Campo <i>$a</i>:</label>
<textarea name=\"campo$a\" wrap=\"virtual\" rows=\"5\" cols=\"86\"></textarea><br />";
$a++;}
echo "<input type=\"hidden\" name=\"campos\" value=\"$c\">";
?>
<br />

<input type="submit" name="Submit" value="Enviar" />
</p>
</form>
<center>
<?php
$ma = $c + 1;
echo "[ <a href=\"sua_pagina.php?cps=$ma\">Adicionar um campo</a>  |  ";

$me = $c -1;
echo "<a href=\"sua_pagina.php?cps=$me\">Retirar um campo</a> ]";
?>

 

ñ esqueça de usar o form assim:

<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">

 

qualquer dúvida posta ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

boa chara .. viu .. mas conta ae como tu conseguiu faze funciona o mkdir ?? eu vi varios topicos e eu mesmo ja tive esse problema que quando cria a pasta ele nao da permissao pra alterar o conteudo e nem alterar as permisoes ? **por enquanto nao vi solucao pra esse problema .. mah flwa ae como ceh conseguiu ???

 

valww

 

*obs: script ta legal mas acho que ainda dava pra trabalha mais a segurança ^^ *opiniao

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai no caso eu ja tinha criado a pasta q se chama "downloads" no caso você poderia fazer da seguinte forma:

 

@mkdir ("$dir", 0777);

 

onde 0777 é permissão de escrita, ou seja, você ja cria a pasta com permissão de escrita.

 

seria bom melhorar a segurança, tipo, verificar o mime type do arquivo, tamanho, peso, etc e tal. podemos fazer isso sim, v oq pode ser melhorado, se quiser alterar e disponibilizar aqui no forum se sinta a vontade.

 

 

outra coisa:

em breve vou disponibilizar um tutorial passo-a-passo de como instalar apache +php +mysql no windows xp 64bit, por enquanto estou testando aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom galera agora disponibilizando um form de upload desse sistema para ficar mais fácil o pessoal pegar a coisa.

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>exemplo1</title>
<script type="text/javascript">
var mainDivName = 'eventDates';

function addEvent(){
var ni = document.getElementById(mainDivName);

var numi = document.getElementById('campos');
var num = (document.getElementById("campos").value -1)+ 2;
numi.value = num;

var divIdName = "eventDate"+num+"Div";
var newdiv = document.createElement('div');
newdiv.setAttribute("id",divIdName);
newdiv.innerHTML = "<label>Descrição:</label><input type=\"text\" name=\"desc[]\" size=\"38\"><label>Imagem:</label><input type=\"file\" name=\"file[]\" size=\"44\"> <a href=\"#\" onclick=\"removeEvent(\'"+divIdName+"\')\"> [x]</a><hr>";


ni.appendChild(newdiv);
}

function removeEvent(divNum){
var d = document.getElementById(mainDivName);
var olddiv = document.getElementById(divNum);
d.removeChild(olddiv);
}
</script>

</head>

<body>
<form method="post" action="upload.php?action=foto" enctype="multipart/form-data">
	  <input type="hidden" name="campos" value="0" id="campos" />
	  <div id="eventDates"></div>

	  <input type="submit" name="submit" value="Inserir Fotos">
	  <center>[ <a href="#" onClick="addEvent();">Adicionar campos</a> ]
	  </form>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um form simples e com muitos recursos e a class do verot seque o linkl para ela, com poucas linhas pode se ter inumeras configurações para o upload

 

http://www.verot.net/php_class_upload_samples.htm

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.