Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
:blink:
Galera peguei o script de upload já não me lembro onde, e fiz umas adaptações tais como:
* verificar tamanho do arquivo permitido
* verificar altura e largura permitida
* verificar tipo de arquivo permitido
* verificar se o arquivo já existe.
Bom agora eu queria muito a ajuda dos feras para acrescentar neste script, por que eu mesmo não consegui. Seria fazer com que ele possa enviar mais de uma foto, ou seja enviar 5 ou mais fotos de uma vez só. Por tanto peço que se os "CARAS!!" ajudar nisso fico muito agradecido. segue abaixo os scritps: :blink:
upload.php
<?require_once "class_upload.php";$upload = new Upload();$upload->Envia_Arquivo();?><html><head><title>Upload</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><form action="upload.php" method="post" enctype="multipart/form-data" name="form1"> <input type="file" name="arquivo"> <input type="submit" name="Submit" value="Enviar"></form></body></html>
class_upload.php
<?php/*_____________________________________ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ ¨ Atualizado por: ¨ ¨ ¨ ¨ Sandro C. Oliveira ¨ ¨ ¨ ¨ sandro.webdesign@gmail.com ¨ ¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨ _______________________________________ */set_time_limit(0);include "funcoes.php"; class Upload{ var $arquivo = ""; var $erro = array (); //Exibe alert do java script. function alerta($texto,$redirect="") { echo "<script language=javascript>"; echo "alert(\" $texto \");"; if ($redirect!="") echo "window.location=\"$redirect\";"; echo "</script>"; } function Verifica_Upload() { $this->arquivo = isset($_FILES['arquivo']) ? $_FILES['arquivo'] : FALSE; if(!is_uploaded_file($this->arquivo['tmp_name'])) { return false; } #! Defina as extensões que serão aceitas. if(!eregi("^image\/(pjpeg|jpeg|gif)$", $this->arquivo['type'])) { $erro[] = $this->alerta("Esse arquivo ".$this->arquivo['name']." não é uma imagem válida!", "java script:history.go(-1)"); exit; } return true; } function Envia_Arquivo() { if($this->Verifica_Upload()) { $this->gera_fotos(); return true; } else { $erro[] = $this->alerta("".$this->erro[$this->arquivo['error']].""); } } function gera_fotos() { $config = array(); // Largura Mxima, em pixels $config["largura"] = 490; // Altura Mxima, em pixels $config["altura"] = 370; // Tamanho máximo do arquivo em Kbytes. $kbytes = 5; //Defina aqui o tamanho necessário em Kbytes. $maximo = $kbytes * 1024; //Diretório onde armazenará as imagens. $diretorio = "fotos/"; // Para verificar as dimenses da imagem $tamanhos = getimagesize($this->arquivo["tmp_name"]); $nome_foto = "imagem_".$this->arquivo['name']; $nome_thumb = "thumb_".$this->arquivo['name']; //Caso diretório não exista ele será criado para o envio. if(!file_exists($diretorio)) { mkdir($diretorio); } if(file_exists($diretorio.$nome_foto)) { $erro[] = $this->alerta("Arquivo já existe!!", "java script:history.go(-1)"); exit; } // Verifica tamanho do arquivo. if ($this->arquivo['size'] > $maximo) { $erro[] = $this->alerta("Erro! O arquivo enviado por você ultrapassa o limite máximo de " . $maximo . " kbytes! Envie outro arquivo","java script:history.go(-1)"); exit; } // Verifica largura if($tamanhos[0] > $config["largura"]) { $erro[] = $this->alerta("Largura da imagem não deve ultrapassar " . $config["largura"] . " pixels"); // Verifica altura if($tamanhos[1] > $config["altura"]) { $erro[] = $this->alerta("Altura da imagem não deve ultrapassar " . $config["altura"] . " pixels"); echo "<meta http-equiv=\"refresh\" content=\"0;URL=java script:history.go(-1)\">"; exit; } } if($tamanhos["mime"] == "image/jpeg") { //determino uma resolução maxima e se a imagem for maior ela sera reduzida. reduz_imagem($this->arquivo['tmp_name'], $tamanhos[0], $tamanhos[1], $diretorio.$nome_foto); //passo o tamanho da thumbnail. reduz_imagem($this->arquivo['tmp_name'], 120, 90, $diretorio.$nome_thumb); //Mensagem $erro[] = $this->alerta("Imagem enviada com SUCESSO!!"); } if($tamanhos["mime"] == "image/gif") { //determino uma resolução maxima e se a imagem for maior ela sera reduzida. reduz_imagem1($this->arquivo['tmp_name'], $tamanhos[0], $tamanhos[1], $diretorio.$nome_foto); //passo o tamanho da thumbnail. reduz_imagem1($this->arquivo['tmp_name'], 120, 90, $diretorio.$nome_thumb); //Mensagem $erro[] = $this->alerta("Imagem enviada com SUCESSO!!"); } } }?>
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 alturaif($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);}/*Fabyo Guimaraes de Oliveira */function reduz_imagem1($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 alturaif($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 = imagecreatefromgif($img);imagecopyresampled($image_p, $image, 0, 0, 0, 0, $tamanho_x, $tamanho_y, $width, $height);return imagegif($image_p, $nome_foto, 100);}?>Fazer upload de mais uma foto... só se tiver vários campos file (um pra cada foto) ou apenas um, mas daí teria que mandar um arquivo compactado com todas as fotos dentro, e com o PHP você descompacta e faz com cada uma das fotos o mesmo que você fez com uma única.Qual a dúvida?
para o envio seja mais de uma eu sei que eu tenho que colocar assim no formulário:<input type="file" name="arquivo[]" size="50"><input type="file" name="arquivo[]" size="50"><input type="file" name="arquivo[]" size="50">mais como faço no restante dentro da class, não tem que ter tipo uma contagem?
Pessoal!!! preciso muito da ajuda, cadê a galera que sempre deu aquela força, sempre acreditei no forum, nunca tive nenhuma decepção.
Amigo, eu não parei pra analisar tua classe, mas funcionaria assim:você tem os campos de upload que você mesmo postou aí:
> <input type="file" name="arquivo[]" size="50"><input type="file" name="arquivo[]" size="50"><input type="file" name="arquivo[]" size="50">
você vai receber com a variável super-global $_FILES, vai ser retornado um array com a seguinte estrutura: $array[info][numeroImagem], $array['tmp_name'][0] por exemplo, tendo isso tu verifica o mime-type ($array['type'][numeroImagem]) e joga dentro das funções imagecreate, a partir daí tu vai criar a imagem miniatura: imagecreatefromjpeg($array['tmp_name'][0])Daí é só adaptar isso pro teu caso. Qualquer coisa dá um toque.Galera e ae ninguém vai dá aquela força, só queria que alguém arruma-se o script e posta-se ele novamente. Achei o script muito bom e tenho certeza de que servirá pra muitos.
Legal cara...
Você sabe como fazer uma miniatura automática dentro do servidor??? Por exemplo:
Fiz um UpLoad da imagem.jpg
Aí ele cria uma imagem em miniatura na mesma pasta automaticamente: imagem_mini.jpg
Isso é fácil?
Valeu
Alexandre