Jump to content


Photo

Sistema De Upload


  • Faça o login para participar
20 replies to this topic

#1 -|- Cold Heart -|-

-|- Cold Heart -|-

    *** MaDe In HeLL ***

  • Usuários
  • 260 posts
  • Sexo:Não informado
  • Interesses:Guitarras<br>Músicas<br>Web

Posted 20/10/2004, 22:57

Eu sempre acho por aí uns codes de upload, mas que muitas vezes não funcionam ou estão totalmente desorganizados. Então, fiz esse script em php para uploads de imagens e qualquer outro tipo de arquivo.

Á princípio, este sitema visa jogar um arquivo dentro de uma pasta determinada, checar se o arquivo já existe e gravar em um db o nome, tipo e tamanho. No final, eu coloco algumas alterações possíveis. Vamos lá!!!


Começaremos pelo db, crie uma tabela chamada "imagens" que deve ter os campos id, nome, tipo, tamanho_bytes

CREATE TABLE `imagens` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `nome` char(250) NOT NULL default '',
  `tipo` char(10) NOT NULL default '',
  `tamanho_bytes` char(100) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;


Aqui, vamos somente determinar as informações do database.

config.php
PHP
<?

$server
= "localhost";
$user = "seu username";
$pass = "";
$database = "nome do seu db";

$conn = mysql_connect($server, $user, $pass) or die("Não foi possível conectar-se ao servidor MySQL");
mysql_select_db($database, $conn) or die("Não foi possível selecionar o banco de dados");

?>


--------------------------------------------------

Nossa index.php com o formulário de envio do arquivo. Essa página tem um script que bloqueia o botão de "enviar" após ele ser clicado, isso evita acidentes ou qualquer outro tipo de complicações.

index.php
<html>
<head>
<title>|:::| Sistema em PHP desenvolvido por Kau&ecirc; Porte |:::|</title>
<link rel="stylesheet" href="estilos/estilos.css" type="text/css">
<script>
function desabilita(){
setTimeout('document.up_form.enviar_imagem.disabled = true', 0000);
document.getElementById("enviar_imagem").value = "Enviando Arquivo...";
}
</script>
</head>

<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0">
<div align="center">
  <table width="100%" height="10" border="0" cellpadding="0" cellspacing="0" bgcolor="#999999">
    <tr>
      <td height="10"></td>
    </tr>
  </table>
  <form action="upload.php" method="post" enctype="multipart/form-data" name="up_form" id="up_form">
    <table width="400" border="0" cellpadding="0" cellspacing="0">
      <tr> 
        <td height="20" align="center" valign="middle" bgcolor="#999999"> <div align="center"><font color="#FFFFFF" size="1" face="Verdana, Arial, Helvetica, sans-serif"><strong> 
            Upload de imagens<br>
            </strong></font></div></td>
      </tr>
      <tr> 
        <td valign="top" bgcolor="#CCCCCC"> <div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><br>
            </font> 
            <table width="300" border="0" align="center" cellpadding="0" cellspacing="3">
              <tr>
                <td><div align="center"><font color="#000000" size="1" face="Verdana, Arial, Helvetica, sans-serif">Selecione 
                    a imagem e clique em "Enviar Imagem"<br>
                    # arquivos jpg e gif<br>
                    # m&aacute;ximo de 2mb<br>
                    <br>
                    <input name="arquivo" type="file" class="campos" id="arquivo" size="25">
                    </font></div></td>
              </tr>
            </table>
            <font size="1" face="Verdana, Arial, Helvetica, sans-serif"><br>
            <input name="enviar_imagem" onclick="desabilita();" type="submit" class="botao" id="enviar_imagem" style="border: 1px #000000 solid" value="Enviar Imagem">
            <br>
            <br>
            <br>
            </font></div></td>
      </tr>
    </table>
  </form>
  <font size="1" face="Verdana, Arial, Helvetica, sans-serif">Patrocinado por: <a href="http://www.rudgesbc.com.br"><strong>http://www.rudgesbc.com.br</strong></a><br>
  Developed by Kau&ecirc; Porte<br>
  Copyright &copy; 2002-2004 Rudgesbc.com.br - Todos os direitos reservados.</font></div>
</body>
</html>

--------------------------------------------------

Aqui, temos o script que irá pegar o arquivo e enviá-lo para o server.
As explicações dos comandos estão no próprio code.

upload.php
PHP
<?

include("config.php"); //inclui as informações do database

$nome = $_FILES["arquivo"]["name"]; //pega o nome do arquivo
$temp_nome = $_FILES["arquivo"]["tmp_name"]; //pega o "temp" do arquivo
$tipo = $_FILES["arquivo"]["type"]; //pega o tipo do arquivo
$tamanho = $_FILES["arquivo"]["size"]; //pega o tamanho do arquivo
$t_maximo = 2000000; //tamanho máximo do arquivo - em bytes
$diretorio = "uploads/"; //pasta onde o arquivo será gravado

if ($nome == "") {  //checa se o campo não foi enviado vazio
  $erro = "Escolha um arquivo á ser enviado";
} elseif (
ereg("[][><}{)(:;,!?*%&#@]", $nome)) {  //checa caracteres inválidos (aconselho não modificar)
  $erro = "O nome do arquivo contém caracteres inválidos";
} elseif (
$tamanho > $t_maximo) {  //checa se o arquivo não ultrapassou o limite
  $erro = "O tamanho máximo permitido é de 2MB";
} elseif (!
eregi("[gif|jpeg|jpg]", $tipo)) { //checa a extensão do arquivo - para liberar mais tipos, apenas acrescente "|extensão do arquivo" ex: [gif|jpeg|jpg|png]
  $erro = "Tipo de arquivo inválido";
} elseif (!
is_file($nome)) { //checa se é mesmo um arquivo
$erro = "Selecione um <u>arquivo</u> á ser enviado";
} elseif (
is_dir($nome)) { //checa se não é um diretório
$erro = "Selecione um <u>arquivo</u> á ser enviado";
} elseif (
file_exists("$diretorio"."$nome")) { //checa se o arquivo já existe no diretório
  $erro = "Já existe um arquivo com este nome, por favor, renomeie-o";
}

if (
$erro == "") { //se não ocorreram erros, vamo gravar o arquivo no server e no db
move_uploaded_file($temp_nome, $diretorio.$nome); //grava o arquivo na pasta do server que foi especificada
$insert = " INSERT INTO imagens (nome,tipo,tamanho_bytes) VALUES ('$nome','$tipo','$tamanho') "; //gravando os dados no db
$sql_ins = mysql_query($insert) or die ("Não foi possível inserir os valores no banco de dados"); // ''
  header("location:suc_up.php"); //se tudo ocorreu bem, vamos á página de sucerro
} else {
  header("location:erro.php?id=$erro"); //se houve algum erro, vai para a página de erro e mostra qual o problema
}

?>


--------------------------------------------------

A página que é mostrada se tudo ocorreu bem.

suc_upload.php
<html>
<head>
<title>|:::| Sistema em PHP desenvolvido por Kau&ecirc; Porte |:::|</title>
<link rel="stylesheet" href="estilos/estilos.css" type="text/css">
</head>

<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0">
<div align="center">
  <table width="100%" height="10" border="0" cellpadding="0" cellspacing="0" bgcolor="#999999">
    <tr>
      <td height="10"></td>
    </tr>
  </table>
  <br>
      <table width="400" border="0" cellpadding="0" cellspacing="0">
      <tr> 
        <td height="20" align="center" valign="middle" bgcolor="#999999"> <div align="center"><font color="#FFFFFF" size="1" face="Verdana, Arial, Helvetica, sans-serif"><strong> 
          Upload de imagens<br>
            </strong></font></div></td>
      </tr>
      <tr> 
        
      <td valign="top" bgcolor="#CCCCCC"><div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif"> 
          </font> <font size="1" face="Verdana, Arial, Helvetica, sans-serif"><br>
          Upload realizado com sucesso!<br>
          <a href="index.php"><br>
          Clique aqui para enviar novos arquivos</a><br>
          <br>
          <br>
          <br>
          </font></div></td>
      </tr>
    </table>
    
  <br>
  <font size="1" face="Verdana, Arial, Helvetica, sans-serif">Patrocinado por: 
  <a href="http://www.rudgesbc.com.br"><strong>http://www.rudgesbc.com.br</strong></a><br>
  Developed by Kau&ecirc; Porte<br>
  Copyright &copy; 2002-2004 Rudgesbc.com.br - Todos os direitos reservados.</font></div>
</body>
</html>

--------------------------------------------------

Página de erro, que mostra se houve algum problema. Se a página for chamada com a string "id" vazia, ele direciona para a index.php

erro.php
PHP
<?

$erro
= $_GET["id"];
if (
$erro == ""){
  header("location:index.php");
}

?>

<html>
<head>
<title>|:::| Sistema em PHP desenvolvido por Kau&ecirc; Porte |:::|</title>
<link rel="stylesheet" href="estilos/estilos.css" type="text/css">
</head>

<body bgcolor="#FFFFFF" leftmargin="0" topmargin="0">
<div align="center">
  <table width="100%" height="10" border="0" cellpadding="0" cellspacing="0" bgcolor="#999999">
    <tr>
      <td height="10"></td>
    </tr>
  </table>
  <br>
      <table width="400" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td height="20" align="center" valign="middle" bgcolor="#999999"> <div align="center"><font color="#FFFFFF" size="1" face="Verdana, Arial, Helvetica, sans-serif"><strong>
            Erro<br>
            </strong></font></div></td>
      </tr>
      <tr>
        
      <td valign="top" bgcolor="#CCCCCC"><div align="center"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">
          </font> <font size="1" face="Verdana, Arial, Helvetica, sans-serif"><br>
          <? echo "$erro"; ?>
          <br>
          <br>
          <a href="javascript:history.go(-1)">Voltar</a><br>
          <br>
          <br>
          </font></div></td>
      </tr>
    </table>
    
  <br>
  <font size="1" face="Verdana, Arial, Helvetica, sans-serif">Patrocinado por:
  <a href="http://www.rudgesbc.com.br"><strong>http://www.rudgesbc.com.br</strong></a><br>
  Developed by Kau&ecirc; Porte<br>
  Copyright &copy; 2002-2004 Rudgesbc.com.br - Todos os direitos reservados.</font></div>
</body>
</html>


--------------------------------------------------

Bom, o script se resume á isso. Agora vamos á algumas modificações.

Se você quiser que o arquivo faça um overwrite casa ele já exista, é só remover a checagem

PHP
<?php

elseif (file_exists("$diretorio"."$nome")) {
  $erro = "Já existe um arquivo com este nome, por favor, renomeie-o";
}

?>


E caso você não queira que as informações do arquivo sejam gravadas em um db, mude o final do script para isso:

PHP
<?php

if ($erro == "") {
move_uploaded_file($temp_nome, $diretorio.$nome);
} else {
  header("location:erro.php?id=$erro");
}

?>



Espero que esse script seja útil á alguem como foi pra mim! É isso aí!!!
[]'s á todos!!!

(y) ;)

Edição feita por: -|- Cold Heart -|-, 25/10/2004, 15:22.

### Fender Vs. Gibson ###

#2 dgt

dgt

    diego^SCFC

  • Usuários
  • 281 posts
  • Sexo:Masculino
  • Localidade:Recife-PE
  • Interesses:Java, Delphi, PHP, SQL, Modelagem de Dados, CSS, Lógica de Programação (Algoritmos), Teoria em Banco de Dados

Posted 24/10/2004, 23:58

tipo.. ele ta só inserindo no BD, mas não ta enviado pro servidor..
Posted Image

#3 -|- Cold Heart -|-

-|- Cold Heart -|-

    *** MaDe In HeLL ***

  • Usuários
  • 260 posts
  • Sexo:Não informado
  • Interesses:Guitarras<br>Músicas<br>Web

Posted 25/10/2004, 01:26

Funciona 100% - certeza absoluta - Teste ele você mesmo:

http://members.lycos...ionando/upload/

E a pasta dos arquivos é:

http://members.lycos...upload/uploads/

(y)

Edição feita por: -|- Cold Heart -|-, 25/10/2004, 01:28.

### Fender Vs. Gibson ###

#4 Luis Otávio

Luis Otávio

    Super Veterano

  • Usuários
  • 3113 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre
  • Interesses:- Desenvolvimento de aplicações Web com linguagem server-side PHP.

    - Desenvolvimento de aplicações Web com linguagem cliente-side JavaScript, conhecedor e utilizador da biblioteca jQUERY e todas suas características.

    - Otimização de Desempenho aplicados a performance de banco de dados Mysql.

    - Otimização de Desempenho para servidores Web utilizando-se como Webserver NGINX em conjunto com Varnish.

    - Sólidos conhecimentos no CMS WordPress para novas implementações, manutenção, criação e otimização de Plugins.

    - Práticas de atendimento, relacionamento e suporte ao cliente. Trabalhando voltado ao público desde o lançamento da empresa iPORTO.COM, criando laços e vínculos com os mais de Mil clientes da empresa e os braços do grupo.

Posted 25/10/2004, 02:33

Poderia fazer a verificação para ver se é um arquivo mesmo... por exemplo, eu digitei algo e mandei fazer upload e foi... se possivel deixa um exemplinho junto ai para pelo menos ver se tem uma extenção o arquivo...

fica ai minha opinião...

PS: eu li o codigo todo e pelo visto ja tem isso... então vale a pena dar uma olhadinha nisso...

;) (y)

Edição feita por: iporto, 25/10/2004, 02:34.

* Otávio Nogueira
* Administração e Configuração de Servidores;
* Combinação Perfeita: NGINX + PHP + VARNISH + HAPROXY
* otavio*iporto.com ~ Tel: +55 51 3366 0177 | +55 51 4063 7343 |
* @iporto

#5 Ronaldo

Ronaldo

    Mu X-Plosion - MUOnline Server

  • Usuários
  • 310 posts
  • Sexo:Não informado
  • Localidade:Nova Xavantina - MT

Posted 25/10/2004, 03:07

Bom dei uma olhdinha, mais pelo que vi não ta 100% pois de uma olhada na pasta upload se digitar caracteres especiais o nome vai mais o arquivo não....

acho que deve ser revisado...
Mu X-Plosion - Qualidade em primeiro lugar!
Mu X-Plosion - MuOnline como você nunca viu antes!
Mu X-Plosion - O Melhor MU que você já viu!
Mu X-Plosion - Por que não basta ser o melhor tem que oferecer o melhor e a maior qualidade!

#6 dgt

dgt

    diego^SCFC

  • Usuários
  • 281 posts
  • Sexo:Masculino
  • Localidade:Recife-PE
  • Interesses:Java, Delphi, PHP, SQL, Modelagem de Dados, CSS, Lógica de Programação (Algoritmos), Teoria em Banco de Dados

Posted 25/10/2004, 13:39

ok, funcionou.. o problema era a pasta de diretório.. eu tinha colocado um path, mas era só colocar uma 'imagem/' ..
Posted Image

#7 -|- Cold Heart -|-

-|- Cold Heart -|-

    *** MaDe In HeLL ***

  • Usuários
  • 260 posts
  • Sexo:Não informado
  • Interesses:Guitarras<br>Músicas<br>Web

Posted 25/10/2004, 15:28

Pronto! Já fiz as alterações lá no post com o script. Vou explicar o que eu fiz:

Acrescentei as linhas:

PHP
<?php

elseif (!is_file($nome)) {
$erro = "Selecione um <u>arquivo</u> á ser enviado";
} elseif (
is_dir($nome)) {
$erro = "Selecione um <u>arquivo</u> á ser enviado";
}

?>


uma checa se o que está sendo enviado é mesmo um arquivo, isso evita que "certas pessoas", né iporto?! :P, mande outras coisas se não arquivos.

O segundo comando checa se você não está tentando enfiar um diretório lá dentro, é meio inútil pois se não for arquivo ele já é barrado antes...mas tá aí pra quem quiser diferenciar nas mensagens de erro. Preocupem-se apena com o !is_file

T+ galera...
(y)
### Fender Vs. Gibson ###

#8 Luis Otávio

Luis Otávio

    Super Veterano

  • Usuários
  • 3113 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre
  • Interesses:- Desenvolvimento de aplicações Web com linguagem server-side PHP.

    - Desenvolvimento de aplicações Web com linguagem cliente-side JavaScript, conhecedor e utilizador da biblioteca jQUERY e todas suas características.

    - Otimização de Desempenho aplicados a performance de banco de dados Mysql.

    - Otimização de Desempenho para servidores Web utilizando-se como Webserver NGINX em conjunto com Varnish.

    - Sólidos conhecimentos no CMS WordPress para novas implementações, manutenção, criação e otimização de Plugins.

    - Práticas de atendimento, relacionamento e suporte ao cliente. Trabalhando voltado ao público desde o lançamento da empresa iPORTO.COM, criando laços e vínculos com os mais de Mil clientes da empresa e os braços do grupo.

Posted 25/10/2004, 15:41

hahahahahhahaahaha, eu sou um pentelho mesmo... hehehe... mas tem que ser... vc num acha? é que tem vezes que num achamos erros... que outras pessoas acham... e é sempre boa esta troca de informações para deixar um sistema cada vez melhor... hehehe, dei uma olhada la... agora ta indo certinho.. num ta indo meus arquivos so com nome... heheheh ( e nem executaveis.. hehehe )

ta bom, hehe...

abraço.

--------------------------
epa... mais uma coisa... agora num ta indo arquivo nenhum ( eu sou chato né.. )

mandei um arquivo "102.jpg" "75k" e ele num foi para o servidor...


;) (y)
* Otávio Nogueira
* Administração e Configuração de Servidores;
* Combinação Perfeita: NGINX + PHP + VARNISH + HAPROXY
* otavio*iporto.com ~ Tel: +55 51 3366 0177 | +55 51 4063 7343 |
* @iporto

#9 -|- Cold Heart -|-

-|- Cold Heart -|-

    *** MaDe In HeLL ***

  • Usuários
  • 260 posts
  • Sexo:Não informado
  • Interesses:Guitarras<br>Músicas<br>Web

Posted 25/10/2004, 17:44

Acho que o "is_file" só pode ser aplicado para ler arqvuios que já estão gravados, não que são temps. Vou tentar achar outro modo de verificar se é mesmo arquivo, aí qualquer coisa eu posto.


T+
(y)
### Fender Vs. Gibson ###

#10 MastersRoX

MastersRoX

    EDITADO

  • Banidos
  • PipPipPipPipPipPipPipPip
  • 774 posts
  • Sexo:Não informado

Posted 09/12/2005, 23:19

ta com erro..
sempre da esse erro:

Selecione um arquivo á ser enviado

Mas eu selecionei....
oq eh?

#11 ScraX

ScraX

    12 Horas

  • Usuários
  • 243 posts
  • Sexo:Masculino
  • Localidade:Varginha, Minas Gerais
  • Interesses:Fazer site, progamar ... apreder coisas novas nesse ramo...

Posted 20/01/2006, 19:50

MasterRox ... aki esta acontecendo esse erro tbm ... só q só mostraa msm ... Tipo de arquivo invalido ... hahaha

t+
ScraX.dEsiGNeR

Fireworks - Dreamweaver - Flash - PHP - JavaScript - AJAX
HTML - XML - CSS - Tableless

#12 viniciusjau

viniciusjau

    Veterano

  • Usuários
  • 1492 posts
  • Sexo:Masculino
  • Localidade:Jaú
  • Interesses:Web Designer em Geral

Posted 25/01/2006, 14:06

ta com erro..
sempre da esse erro:

Selecione um arquivo á ser enviado

Mas eu selecionei....
oq eh?

pra mim tbm deu o mesmo erro...
dai eu tirei essa linha:

elseif (!is_file($nome)) {

e troquei por essa:

elseif (is_file($nome)) {

tirei o ponto de exclamaçãoe funcionou, só que agora ele envia todo tipode arquivo rs *.txt *.exe

:wacko:

#13 Escoces

Escoces

    Fotógrafo

  • Usuários
  • 168 posts
  • Sexo:Masculino
  • Localidade:Algum lugar ^^
  • Interesses:Mulher, Fotografia, Web, Mulher, Carros, Mulher, etc...

Posted 03/02/2006, 20:46

cara... ta funcionando.. mas aparece o Página não encontrada depois de fazer o upload..


http://danielwiedema...rafo/upload.php

Página não encontrada
A página que você procura pode ter sido removida ou mudado de nome, ou não está disponível no momento.

--------------------------------------------------------------------------------

Tente o seguinte:

Se você digitou o endereço da página na barra de endereços, certifique-se de que ele foi digitado corretamente.

Abra a danielwiedemann.itrio.k8.com.br home page, e procure os links para as informações desejadas.
Clique no botão  Voltar para tentar outro link.
Clique em  Pesquisar para procurar informações na Internet.



HTTP 404 - arquivo não encontrado
Internet Explorer


Oq eu posso fazer? A pagina upload.php ta no ar.. =/

#14 Nando

Nando

    Eta eta eta, brasileiro quer.. futibol, mulher e rock'n roll

  • Usuários
  • 916 posts
  • Sexo:Masculino
  • Localidade:Sapucaia do Sul - RS
  • Interesses:Não sou interesseiro.

Posted 15/02/2006, 04:38

Acho que o "is_file" só pode ser aplicado para ler arqvuios que já estão gravados, não que são temps. Vou tentar achar outro modo de verificar se é mesmo arquivo, aí qualquer coisa eu posto.


T+
(y)

Eae achou aguma outra maneira??

Eu testei aqui e não funcionou, só tirando mesmo a linha com o } elseif (!is_file($nome)) { pra rolar, isso testando locamente, vou ver se vai ser igual no servidor quando eu enviar o sistema q estou desenvolvendo...

No mais tá show de bola agora tomare q o Cold ainda entre no fórum AuhhahAHhAh ou se alguem mais souber como continua a obra dele com alguma informação útil ao código Blz?

E sobre não encontrar a upload.php só tem uma solução mesmo é ver se a url ta certa, quem sabe vc colocou um acento em fotógrafo no nome da pasta e tenha dado errado ou algo similar, não tem como não achar uma página usando o caminho certo a url ta errada partindo dos meus conhecimentos...

[ ]'s
Qualquer dia será só 1 linha de assinatura! x) Aí vou deixar essa aki mesmo já pra garantir.
Fireworks: llllllllllllllllllllllllllllll (Jah mexo a tempo mas ando meio parado)
Dreamweaver: llllllllllllllllllllllllllllll (Braço direito enquanto programo)
Js: llllllllllllllllllllllllllllll (Recem iniciando)
PHP: llllllllllllllllllllllllllllll (Dinamic Punch!!)

#15 -|- Cold Heart -|-

-|- Cold Heart -|-

    *** MaDe In HeLL ***

  • Usuários
  • 260 posts
  • Sexo:Não informado
  • Interesses:Guitarras<br>Músicas<br>Web

Posted 15/02/2006, 15:05

Kct... Mow cota sem mexer com PHP, tinha mudado minha vida pra guitarra :-P

Mas agora voltei á mexer pq preciso trampar, to remexendo meus codes antigos como esse, e tentando chegar á perfeição... qlq novidade eu posto aki.. ok galera?!

Mods.: desculpe pelo up! sem warm vai
### Fender Vs. Gibson ###




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq