BetoGroo Postado Agosto 23, 2009 Denunciar Share Postado Agosto 23, 2009 (editado) Olá!Estou começando agora com PHP, e gostaria postar um script.É um script simples, para upload de imagens.Vou incrementando dia a dia.Farei ainda tratamento de erros, e criar a miniatura quadrada, sem distorçãoPor favor, comentem, critiquem, e deem dicas.28/08/2009 -> Sobe a imagem, compacta, cria miniatura e grava dados em banco de dados.23/08/2009 -> Apenas sobe e renomeia a imagem.Arquivos:index.php: Formulário de envioUpload.class.php: Classe para o envioupload.php: Ação do formuláriobanco.sql: Script de criação do banco de dadosindex.php<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Upload de múltiplas imagens</title> </head> <body> <form action="upload.php" method="post" enctype="multipart/form-data"> <fieldset><legend>Upload de Imagens</legend> <?php for ($i=0; $i<3; $i++){ ?> <input name="arquivo[]" id="arquivo[]" type="file" /> <br /> <?php } ?> <input type="submit" name="button" id="button" value="Enviar" /> </fieldset> </form> </body> </html> Upload.class.php <?php class Upload{ var $qtd; var $imagem; var $dir; var $dirMini; var $tamanho; function __construct($qtd, $imagem, $dir, $tamanho){ $this->qtd = $qtd; $this->imagem = $imagem; $this->dir = $dir; $this->dirMini = $dir . 'mini/'; $this->tamanho = $tamanho; self::tipoImagem(); self::nomeImagem(); } function gethash(){ for($i=0; $i<$this->qtd; $i++){ $this->imagem['hash'][$i] = md5_file($this->dir.$this->imagem['nome'][$i]); } } function getDimensao(){ for ($i=0; $i<$this->qtd; $i++){ $dimensao[$i] = getimagesize($this->dir.$this->imagem['nome'][$i]); $this->imagem['largura'][$i] = $dimensao[$i][0]; $this->imagem['altura'][$i] = $dimensao[$i][1]; if($this->imagem['largura'][$i] > $this->imagem['altura'][$i]){ $this->imagem['novaLargura'][$i] = $this->tamanho; $this->imagem['novaAltura'][$i] = $this->tamanho*$this->imagem['altura'][$i]/$this->imagem['largura'][$i]; }else{ $this->imagem['novaAltura'][$i] = $this->tamanho; $this->imagem['novaLargura'][$i] = $this->tamanho*$this->imagem['largura'][$i]/$this->imagem['altura'][$i]; } } } function nomeImagem(){ for ($i=0; $i<$this->qtd; $i++){ $this->imagem['nome'][$i] = date('YmdHis') . "_" . substr(md5(time() * rand(1,9999) * rand(1,999)),0,14). $this->imagem['tipo'][$i]; } } function tipoImagem(){ for ($i=0; $i<$this->qtd; $i++){ switch ($this->imagem['type'][$i]){ case 'image/jpeg': $this->imagem['tipo'][$i] = '.jpg'; break; case 'image/pjpeg': $this->imagem['tipo'][$i] = '.jpg'; break; case 'image/gif': $this->imagem['tipo'][$i] = '.gif'; break; case 'image/bmp': $this->imagem['tipo'][$i] = '.bmp'; break; case 'image/png': $this->imagem['tipo'][$i] = '.png'; break; } } } function enviaImagem(){ for ($i=0; $i<$this->qtd; $i++){ move_uploaded_file ($this->imagem['tmp_name'][$i], $this->dir . $this->imagem['nome'][$i]); copy($this->dir . $this->imagem['nome'][$i], $this->dirMini . $this->imagem['nome'][$i]); } } function criaImagem(){ for ($i=0; $i<$this->qtd; $i++){ $novaImagem[$i] = imagecreatetruecolor($this->imagem['novaLargura'][$i], $this->imagem['novaAltura'][$i]); $origem[$i] = imagecreatefromjpeg($this->dir.$this->imagem['nome'][$i]); imagecopyresized($novaImagem[$i], $origem[$i], 0,0,0,0, $this->imagem['novaLargura'][$i], $this->imagem['novaAltura'][$i], $this->imagem['largura'][$i], $this->imagem['altura'][$i]); imagejpeg($novaImagem[$i], $this->dir . $this->imagem['nome'][$i],80); } } function criaMini(){ for ($i=0; $i<$this->qtd; $i++){ $novaImagem[$i] = imagecreatetruecolor(100, 100); $origem[$i] = imagecreatefromjpeg($this->dirMini.$this->imagem['nome'][$i]); imagecopyresized($novaImagem[$i], $origem[$i], 0,0,0,0, 100, 100, $this->imagem['largura'][$i], $this->imagem['altura'][$i]); imagejpeg($novaImagem[$i], $this->dirMini . $this->imagem['nome'][$i],80); } } function InsereBanco(){ $conn = new PDO('mysql:host=localhost; dbname=upload', 'root', ''); for($i=0; $i<$this->qtd; $i++){ $conn->exec("INSERT INTO imagem (url_imagem, url_mini, hash_imagem) VALUES ('{$this->dir}{$this->imagem['nome'][$i]}', '{$this->dirMini}{$this->imagem['nome'][$i]}', '{$this->imagem['hash'][$i]}')"); } } } ?> upload.php <?php function __autoload($classe){ include_once "{$classe}.class.php"; } $img = new Upload(3, $_FILES['arquivo'], 'images/', 400); $img->enviaImagem(); $img->gethash(); $img->getDimensao(); $img->criaImagem(); $img->criaMini(); $img->insereBanco(); ?> banco.sql CREATE DATABASE `upload` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; USE `upload`; CREATE TABLE IF NOT EXISTS `imagem` ( `id_imagem` int(11) NOT NULL AUTO_INCREMENT, `url_imagem` varchar(50) COLLATE utf8_bin NOT NULL, `url_mini` varchar(50) COLLATE utf8_bin DEFAULT NULL, `hash_imagem` char(32) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`id_imagem`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin ?>Um abraço a todos! Editado Agosto 28, 2009 por BetoGroo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 raPPa Postado Abril 12, 2010 Denunciar Share Postado Abril 12, 2010 fala Beto, eu uso o easyPHP e não funcionou aqui não deu o seguinte erro...Parse error: parse error in c:\arquivos de programas\easyphp1-8\www\upload\upload.php on line 7$img = new Upload(3, $_FILES['arquivo'], 'images/', 400); Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
BetoGroo
Olá!
Estou começando agora com PHP, e gostaria postar um script.
É um script simples, para upload de imagens.
Vou incrementando dia a dia.
Farei ainda tratamento de erros, e criar a miniatura quadrada, sem distorção
Por favor, comentem, critiquem, e deem dicas.
28/08/2009 -> Sobe a imagem, compacta, cria miniatura e grava dados em banco de dados.
23/08/2009 -> Apenas sobe e renomeia a imagem.
index.php
Upload.class.php upload.php banco.sqlUm abraço a todos!
Editado por BetoGrooLink para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.