|
||
|
|
Conheça também: Onmasters . Ofertas . Divulgue! . Vai.la . Geraboleto . Baixa.la . Assista.la . Joga.la
» Início » Programação » PHP » Upload Simples com PHP
--> |
|
Avaliação:
![]() ![]() ![]() ![]() | Publicado em: 19/08/2007Upload Simples com PHP
Humberto Rodrigues Técnico em Informática. Webmaster. Conhecimentos em Photoshop, Flash, Dreamweaver, Visual Basic, Delphi, Access, HTML, CSS, SQL e PHP.
Hoje vamos, criar um sistema de upload, bem simples e funcional, segue abaixo o código com os devidos comentários. if (isset($arquivo)) // Verificamos se a variável "arquivo" existe if (is_uploaded_file($arquivo)) // Verificamos se existe algum arquivo na variável "Arquivo" ?> <td> <input type="file" name="arquivo"> </td> www.humbertorodrigues.com ![]() Elvis <elvis-olivera@bol.com.br>
Muito Bom seu tuto cara, show de bola, mas vc poderia ensinar também como se faz para dar uoload no nome de arquivo que foi gerado em texto para o anco de Dados, assim, ele poderia ser usado em outrasaplicações.
![]() ![]() ![]() ![]() ![]() ueslei <uesleisouza@yahoo.com.br>
bom post, mas qto ao nome do arquivo eh melhor usar:
nome = md5(time()); assim as chances de repetir são praticamente impossiveis ![]() ![]() ![]() ![]() ![]() Charles <charlesske@hotmail.com>
Eu fiz uma classe de upload, por ter que enviar e fazer muitas validações, tá com umas expressões regulares meio "feia", mas não to com muita vontade de arrumar e tem outra coisa pra fazer, que não tive tempo, na parte de criar um diretório, caso existe mais subníveis, a classe não criará. Exemplo: /pasta1 (será criada)
agora /pasta1/pasta2 (não será criada) de resto, fiquem a vontade para modificar e melhorar. s / Classe que valida e salva um arquivo enviado pelo usuário Método construtor array arq = Array que trás o arquivo enviado pelo usuário string dir = Diretório onde o arquivo é salvo (Padrão: "arquivo") string val = Tipo de validação do arquivo ("default" e "imagem" - Padrão: "default") int tam = Tamanho do arquivo passado em Kb (Kilobytes) (Padrão: 1024 Kb => 1 mb); Exemplo => obj = new Upload(_FILES"arquivo","arquivo","default",500); Método de envio => boolean obj->enviarArquivo(); Método que mostra os erros => string obj->erros(); / class Upload { var arquivo; var nome = ''; var diretorio; var tamanho; var validacao; var largura = 20; var altura = 20; var erro = array(); function Upload(arq = '',dir = 'arquivo',val = 'default',tam = 1024) { this->arquivo = arq; this->diretorio = dir; this->validacao = val; this->tamanho = (tam 1024); } function setDiretorio(dir) { this->diretorio = dir; } function getDiretorio() { return this->diretorio; } function setTamanho(tam) { this->tamanho = (tam 1024); } function getTamanho() { return this->tamanho; } function setArquivo(arq) { this->arquivo = arq; } function getArquivo() { return this->arquivo; } function setResolucao(x,y) { this->largura = x; this->altura = y; } function getLargura() { return this->largura; } function getAltura() { return this->altura; } function setValidacao(val) { this->validacao = val; } function setNome(nom) { this->nome = nom; } function getNome() { return this->nome; } function arquivoExiste() { if (this->arquivo) { return (is_uploaded_file(this->arquivo"tmp_name") && !empty(this->arquivo"tmp_name")) ? true : false; } else { return false; } } function validarArquivo() { if (this->arquivoExiste()) { if (this->arquivo"size" > this->tamanho) { this->erro = "O arquivo enviado é maior que o permitido pelo servidor."; return false; } switch (this->validacao) { case 'default': if (!eregi("(phpaspcgibatphpsaspx)",this->arquivo"name")) { return true; } else { this->erro = "O arquivo enviado não é um arquivo aceito pelo servidor."; return false; } break; case 'imagem': if (eregi("image/(gifx-pngpjpeg)",this->arquivo"type")) { res = getimagesize(this->arquivo"tmp_name"); if (res0 > this->largura res1 > this->altura) { this->erro = "A imagem enviada não pode superar os limites de ".this->largura." x ".this->altura."."; return false; } return true; } else { this->erro = "Imagem inválida, por favor, envie novamente."; return false; } break; case 'html': if (eregi("text/html",this->arquivo"type")) { return true; } else { this->erro = "Arquivo HTML inválido, por favor, envie novamente."; return false; } break; default: this->erro = "O tipo de validação "".this->validacao."" não existe."; return false; } } else { this->erro = "O arquivo não existe."; return false; } } function enviarArquivo() { if (this->validarArquivo()) { set_time_limit(0); if (!file_exists(this->diretorio)) { if (!mkdir(this->diretorio)) { this->erro = "Não foi possível criar o diretório de destino para o arquivo."; return false; } } if (!this->nome) { this->nome = this->arquivo"name"; } else { extArq = explode(".",this->arquivo"name"); if (strpos(this->nome,'.') === false) { this->nome .= ".".extArq1; } else { extNom = explode(".",this->nome); if (extNom1 != extArq1) { this->nome = extNom0.".".extArq1; } } } while (file_exists(this->diretorio.this->nome)) { this->nome = preg_replace("/(.?)(_?)(d)(..)?/e", "'1_'.(31).'4'",this->nome); } if (!move_uploaded_file(this->arquivo"tmp_name",this->diretorio."/".this->nome)) { this->erro = "Não foi possível salvar o arquivo."; return false; } return true; } else { return false; } } function erros() { message = ''; foreach (this->erro as msg) { message .= msg."<br />"; } return message; } } ![]() ![]() ![]() ![]() ![]() leonardo horta <leonardo_br2006@hotmail.com>
Olá gostei muito da matéria.. mas estou com uma dúvida quanto a segurança. como eu faço para limitar o tipo de arquivo, nao deixando por exemplo upar nenhum arquivo sem ser jpg, gif ou bmp por exemplo. Obrigado.. e parabéns mais uma vez
![]() ![]() ![]() ![]() ![]() leonardo César <leonardo_zona@hotmail.com>
amigo, gostaria de saber para que diretorio ele vai no banco de dados, e como eu faço para exibir o arquivo que foi incluso, na pagina... desde já agradeço
![]() ![]() ![]() ![]() ![]() MUOCEANO <admoceano@hotmail.com>
Aproveite e divirta-se aqui http://muoc.sytes.net:8090/
Comunidade official: http://www.orkut.com/Community.aspx?cmm=48373125 muoceano news ou entao digita no explore o nome do melhor mu q vc ja viu muoceano.rg3.net e so vc digitar no google ou no cade obrigado bora jogar ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
|