Ir para conteúdo

POWERED BY:

Arquivado

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

toto29

[Resolvido] Alterar script de upload de imagem

Recommended Posts

Boas pessoal, tembem eu sou novo por estas bandas, depois de ler varios post aproveitei o codigo do Fabyo, no entanto tenho aqui um pequeno problema nesta parte do codigo no ficheiro class_upload.php existem estas linhas que definem o novo nome das imagens:

 

$nome_foto = "imagem_".microtime().".jpg";

$nome_thumb = "thumb_".microtime().".jpg";

 

é facil de perceber que ao retirar o microtime a s imagens vão ficar todas com o mesmo nome e o script acaba por apagar uma atraz das outras de forma que só vamos conseguir a ultima imagem que fizemos upload.

 

A minha questão:

 

será que dá pra colocar o codigo de forma que o nome da 1ª imagem seja ----- qualquercoisa.jpg ------- a 2ª qualquercoisa1.jpg e por ai adiante.

 

fica desde já o meu agradecimento á alma caridosa que me responda pois estou de volta disto á já algum tempo e não chego a lado nenhum, talvez seja porque não percebo muito de php.

 

 

 

 

 

 

 

 

index.php

 

<?php
if(!(file_exists("class_upload.php"))){
	exit("Classe class_upload.php nao encontrada");
} else {	
	require_once "class_upload.php";
}	 

if($_SERVER["REQUEST_METHOD"] == "POST"){
	$upload = new Upload();
	$upload->Enviar_Fotos();
	exit;
}	

?>
<html>
<head>
<title>Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="<?php echo $_SERVER["PHP_SELF"];?>" method="post" enctype="multipart/form-data" name="form1">
	<input type="file" name="arquivo[]"><br />
	<input type="file" name="arquivo[]"><br /> 
	<input type="file" name="arquivo[]"><br />
	<input type="file" name="arquivo[]"><br />
	<input type="file" name="arquivo[]"><br />
	<input type="file" name="arquivo[]"><br /> 
	<input type="file" name="arquivo[]"><br />
	<input type="file" name="arquivo[]"><br /> 
	<input type="file" name="arquivo[]"><br />
	<input type="file" name="arquivo[]"><br />
	<input type="file" name="arquivo[]"><br />		  
	<input type="file" name="arquivo[]">
	<input type="submit" name="Submit" value="Enviar">
</form>
</body>
</html>

 

funcoes.php

 

<?php
/*Fabyo Guimaraes de Oliveira */
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);
}

?>

class_upload.php

<?php
set_time_limit(0);
if(!(file_exists("funcoes.php"))){
	exit("funcoes.php nao encontrada");
} else {	
	require_once "funcoes.php";
}	 

class Upload
{
	var $arquivo = "";
	var $erro = array ( "0" => "upload execultado com sucesso!",
						"1" => "O arquivo é maior que o permitido pelo Servidor",
						"2" => "O arquivo é maior que o permitido pelo formulario",
						"3" => "O upload do arquivo foi feito parcialmente",	
						"4" => "Não foi feito o upload do arquivo"
					   );
		
	function Enviar_Fotos()
	{
		$this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE;
		
		for($i = 0; $i < 12; $i++){
			$name	 = $this->arquivo['name'][$i];
			$type	 = $this->arquivo['type'][$i];
			$tmp_name = $this->arquivo['tmp_name'][$i];
			$error	= $this->arquivo['error'][$i];
			$size	 = $this->arquivo['size'][$i];			
			
			if(is_uploaded_file($tmp_name)) {
				$this->salvar_fotos($tmp_name, $error);
			} else {
				echo "<span style=\"color: white; border: solid 1px; background: red;\">".$this->erro[$error]."</span><br />";
			}				
		}
	}
	
	function salvar_fotos($tmp_name, $error)
	{
		$diretorio = "fotos/";
		if(!file_exists($diretorio)){
			if(!(mkdir($diretorio))) die("Nao foi possivel criar a pasta fotos");
		}

		$get = getimagesize($tmp_name);
		
		if($get["mime"] != "image/jpeg"){	
			die("<span style=\"color: white; border: solid 1px; background: red;\">Esse arquivo nao é uma imagem valida</span>");
		}
		
		$nome_foto  = "imagem_[].jpg";		
		$nome_thumb = "thumb_[].jpg";
		
		if (!(is_writable($diretorio))) {
			die('O diretorio fotos não possui permissão de escrita');
		}
		//determino uma resolução maxima e se a imagem for maior ela sera reduzida
		reduz_imagem($tmp_name, 400, 300, $diretorio.$nome_foto);		 
		//passo o tamanho da thumbnail
		reduz_imagem($tmp_name, 120, 90, $diretorio.$nome_thumb);
		echo "<span style=\"color: white; border: solid 1px; background: blue;\">".$this->erro[$error]."</span><br />";
	}	
}

?>

 

 

o meu problema está mesmo no fim do ficheiro class_upload.php.

 

 

$nome_foto = "imagem_".microtime().".jpg";

$nome_thumb = "thumb_".microtime().".jpg";

 

 

 

será que dá pra colocar o codigo de forma que o nome da 1ª imagem seja ----- qualquercoisa1.jpg ------- a 2ª qualquercoisa2.jpg e por ai adiante.

 

O que eu estou a fazer é uma pagina para um amigo mas esta parte ultrapassa-me, podem ver em www.drilimolde.pt ainda está embrionaria mas já dá para ter a ideia. a parte onde as imagens vão ser mostradas vai ser na parte comercial.

 

 

Desde já o meu obrigado pelas ajudas que vou ter.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atenção:

Este subfórum é destinado apenas para postagem de scripts prontos e testados para auxiliar os demais membros.

Não é permitido a abertura de tópicos com dúvidas. Para isso, use o Fórum de PHP.

Tópico Movido:

PHP » Laboratório de scripts (PHP) http://forum.imasters.com.br/public/style_emoticons/default/seta.gif php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce pode usar um txt como base para colocar uma sequencia no nome das imagens. Exemplo:

//ANTES CRIE UM ARQUIVO COM NOME base.txt E COLOQUE PERMISAO DE ESCRITA (CHMOD 777)
$base = file_get_contents('base.txt');
if(!$base) $base = 0;
$sequencia = $base + 1;

$nome_foto = "imagem_".$sequencia.".jpg";
$nome_thumb = "thumb_".$sequencia.".jpg";

//Agora salvar a nova base
$fp = fopen('base.txt', 'w');
fwrite($fp, $sequencia);
fclose($fp);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desde já o meu obrigado a quem respondeu e as minhas desculpas por ter colocado o topico onde não devia. assim que chegar a casa vou testar e depois deixo o feed.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cá estou eu de novo sem duvida que esta alteração resolveu o meu problema, no entanto será que me podem dar mais uma ajuda.

 

é o seguinte:

 

Como eu pretendo ter apenas 12 fotos, será que dá para fazer um reset ao txt de forma que quando eu for fazer upload de novas fotos elas fiquem com o mesmo nome e substituam as que se encontram guardadas na pasta.

 

 

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

resolvi seguir o que me disse e meti mão no rato/teclado e resolvi fazer a coisa assim

 

fopen("base.txt", "w+");

 

bem sei que foi uma forma facil de vor a volta a questão mas para o efeito serve.

 

 

Agora só falta copiar o conteudo desse directorio para outra localização, vamos ver o que consigo,

caso não me safe lá terei de pedri ajuda novamente, e mesmo que me safe venho aqui colocar como fiz.

 

Aguardo comentários vossos ao que resolvi fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

show de bola, parabens pra quem desenvolveu, sou bem leigo no assunto, tentei modificar mais nao to conseguindo, como faço pra deixar fixo o tamanho?se a imagem for maior diminuir no tamanho que definir e se for menor aumentar????? aqui ta rodando normal o scrip só que ele pega um valor ou a altura ou largura, queria deixar fixo os dois, como poderia fazer, obrigado desde ja

 

abç

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.