toto29 0 Denunciar post Postado Julho 3, 2009 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
William Bruno 1501 Denunciar post Postado Julho 4, 2009 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
Rafael Wapbrasil 1 Denunciar post Postado Julho 4, 2009 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
André D. Molin 15 Denunciar post Postado Julho 4, 2009 Dá para trocar isso: $fp = fopen('base.txt', 'w'); fwrite($fp, $sequencia); fclose($fp); Por isso: file_put_contents('base.txt', $sequencia); Compartilhar este post Link para o post Compartilhar em outros sites
toto29 0 Denunciar post Postado Julho 4, 2009 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
toto29 0 Denunciar post Postado Julho 4, 2009 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
André D. Molin 15 Denunciar post Postado Julho 5, 2009 Amigo, da para fazer facil. Sugiro que estude condições no PHP. Por exemplo, if ($num > 12) { // resetar a contagem exit(); } ;) Compartilhar este post Link para o post Compartilhar em outros sites
toto29 0 Denunciar post Postado Julho 5, 2009 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
zombie 0 Denunciar post Postado Maio 29, 2010 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