Jump to content


Photo

Upload + 1


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

#1 fabian

fabian

    12 Horas

  • Usuários
  • 152 posts
  • Sexo:Não informado

Posted 20/04/2005, 17:41

Estou fazendo um sitema de upload para enviar somente arquivos .doc e .xls, o sistema está quase pronto, só q tem uns detalhes q qria vêr com vcs.

1º O upload do arquivo .xls não tá funcionando.

2º Gostaria q pudesse madar somente um arquivo por vêz ou os dois ao mesmo tempo.

Do jeito q está aí ele não deixa enviar só um tipo diz q o outro tem extenção errada, só q não coloquei nenhum arquivo para subir... entendem?...

Tipo assim:

Digamos q o relatório em .doc já está pronto, então vou fazer o up dele, certo, mas o relatório em .xls, ainda não, então vou mandar mais tarde.

Só q quando mando o .doc ele dá aviso q o outro, no caso o .xls é inválido, mesmo sem eu postar nada pra ele fazer o up.

Espero q tenham entendido... hehehe

Aí esta o script de upload.

<?php 
include "conecta.inc.php";    
$conexao=Mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$conexao); 

$erro = $config = array();

// Prepara a variável do arquivo
$arquivo = isset($_FILES["doc"]) ? $_FILES["doc"] : FALSE;

// Tamanho máximo do arquivo word(em bytes)
$config["tamanho"] = 106883;

// Formulário postado... executa as ações
if($arquivo)
{  
    // Verifica se o mime-type do arquivo é de imagem
    if(!eregi("^application/msword\$", $arquivo["type"]))
    {
        $erro[] = "Arquivo em formato inválido! O Arquivo deve ser doc ou xls. Envie outro arquivo";
    }
    else
    {
        // Verifica tamanho do arquivo
        if($arquivo["size"] > $config["tamanho"])
        {
            $erro[] = "Arquivo em tamanho muito grande! 
  O Arquivo deve ter no máximo " . $config["tamanho"] . " bytes. 
  Envie outro arquivo";
        }
    }
    
    // Imprime as mensagens de erro
    if(sizeof($erro))
    {
        foreach($erro as $err)
        {
            echo " - " . $err . "<BR>";
        }
    }

    // Verificação de dados OK, nenhum erro ocorrido, executa então o upload...
    else
    {
        // Pega extensão do arquivo
        preg_match("/\.(doc){1}$/i", $arquivo["name"], $ext);

        // Copia o nome do arquivo
        $arqv_nome = $_FILES['doc']['name'];

        // Pasta onde o arquivo ficará no servidor
        $arqv_dir = "dow/" . $arqv_nome;

        // Faz o upload do arquivo
        move_uploaded_file($arquivo["tmp_name"], $arqv_dir);

        echo "Seu arquivo foi enviado com sucesso!";
    }
}

$erro1 = $config1 = array();

// Prepara a variável do arquivo
$arquivo1 = isset($_FILES["xls"]) ? $_FILES["xls"] : FALSE;

// Tamanho máximo do arquivo excel(em bytes)
$config1["tamanho1"] = 106883;

// Formulário postado... executa as ações
if($arquivo1)
{  
    // Verifica se o mime-type do arquivo é de excel
    if(!eregi("^application/x-excel\/(xls)$", $arquivo1["type"]))
    {
        $erro1[] = "Arquivo em formato inválido! O Arquivo deve ser doc ou xls. Envie outro arquivo";
    }
    else
    {
        // Verifica tamanho do arquivo
        if($arquivo1["size"] > $config1["tamanho1"])
        {
            $erro1[] = "Arquivo em tamanho muito grande! 
  O Arquivo deve ter no máximo " . $config1["tamanho1"] . " bytes. 
  Envie outro arquivo";
        }
    }
    
    // Imprime as mensagens de erro
    if(sizeof($erro1))
    {
        foreach($erro1 as $err1)
        {
            echo " - " . $err1 . "<BR>";
        }
    }

    // Verificação de dados OK, nenhum erro ocorrido, executa então o upload...
    else
    {
        // Pega extensão do arquivo
        preg_match("/\.(xls){1}$/i", $arquivo1["name"], $ext);

        // Copia o nome do arquivo
        $arqv_nome1 = $_FILES['xls']['name'];

        // Pasta onde o arquivo ficará no servidor
        $arqv_dir1 = "dow/" . $arqv_nome1;

        // Faz o upload do arquivo
        move_uploaded_file($arquivo1["tmp_name"], $arqv_dir1);

        echo "Seu arquivo foi enviado com sucesso!";
    }
}

?>

Valeu!
Diego Fabian

#2 Spider-man

Spider-man

    Doutor

  • Usuários
  • 987 posts
  • Sexo:Não informado

Posted 20/04/2005, 17:45

exemplo de upload:

// *** Parâmetros de configuração da operação ***

// Limitar as extensões? (sim ou nao)
$limitar_ext = "sim";

// extensões autorizadas
$extensoes_validas = array(".gif",".jpg",".jpeg",".bmp");

//caminho absoluto onde os arquivos serão armazenados
$caminho_absoluto = "c:\apache\upload";

// Limitar o tamanho do arquivo? (sim ou nao)
$limitar_tamanho = "nao";

// tamanho limite do arquivo em bytes
$tamanho_bytes = "200000";

// se já existir o arquivo, indica se ele deve ser sobrescrito (sim ou nao)
$sobrescrever = "nao";
set_time_limit (0);

// repete os mesmos comandos para os 5 arquivos
for ($i=1 ; $i<=5 ; $i++)
{
    $id_arquivo = "arquivo".$i;
    $erro = FALSE;

    $nome_arquivo = $_FILES[$id_arquivo]['name'];
    $tamanho_arquivo = $_FILES[$id_arquivo]['size'];
    $arquivo_temporario = $_FILES[$id_arquivo]['tmp_name'];

    if (!empty ($nome_arquivo))
    {
    if ($sobrescrever == "nao" && file_exists("$caminho_absoluto/$nome_arquivo"))
    {
            $erro = TRUE;
      echo "Arquivo $nome_arquivo já existe.";
    }

    if (($limitar_tamanho == "sim") && ($tamanho_arquivo > $tamanho_bytes))
        {
            $erro = TRUE;
      echo "Arquivo $nome_arquivo deve ter no máximo $tamanho_bytes bytes.";
    }

    $ext = strrchr($nome_arquivo,'.');
    if ($limitar_ext == "sim" && !in_array($ext,$extensoes_validas))
    {
            $erro = TRUE;
      echo "Extensão do arquivo $nome_arquivo inválida para upload.";
    }

    if(!$erro && move_uploaded_file($arquivo_temporario, "$caminho_absoluto/$nome_arquivo"))
      echo "<p align=center>O upload do arquivo <b>$nome_arquivo</b> foi concluído com sucesso.</p>";
    else
      echo "<p align=center>O arquivo $nome_arquivo não pôde ser copiado para o servidor.</p>";
    }
}



OBS: vc estah colocando no form isto: enctype=multipart/form-data ?

#3 fabian

fabian

    12 Horas

  • Usuários
  • 152 posts
  • Sexo:Não informado

Posted 20/04/2005, 23:37

Sim, estou.

Não qro fazer deste jeito de só verificar as extenções pq dá para renomear um arquivo e enviá-lo como sendo um documento .doc ou .xls.

Por isso estou fanzendo uzando mime-type.

#4 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 21/04/2005, 04:56

É só verificar o valor de $_FILES['campo']['type'] que irá lhe informar.
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#5 fabian

fabian

    12 Horas

  • Usuários
  • 152 posts
  • Sexo:Não informado

Posted 22/04/2005, 15:15

Seguinte pessoal!

Peguei outro script de upload e estou tentando alterá-lo para oq preciso... então é assim:

Preciso pelo mesmo form enviar arquivos Word e Excel, verificados pelo Mime-type deles.

Mas do jeito q estou fazendo só estou conseguindo validar ou um ou outro.

Vou anexar o sistema para quem quiser me ajudar!

E aqui o arquivo de Configuração:

<?php

// *** Parâmetros de configuração da operação ***

// Limitar as extensões? (sim ou nao)
$limitar_ext = "sim";

// extensões autorizadas
$extensoes_validas = array(".doc",".xls");

//caminho absoluto onde os arquivos serão armazenados
$caminho_absoluto = "/home/saly/public_html/site/intranet/dow";

// Limitar o tamanho do arquivo? (sim ou nao)
$limitar_tamanho = "nao";

// tamanho limite do arquivo em bytes
$tamanho_bytes = "200000";

// se já existir o arquivo, indica se ele deve ser sobrescrito (sim ou nao)
$sobrescrever = "sim";

?>

Attached Files

  • Attached File  up.zip   1.66KB   5 downloads

Edição feita por: fabian, 22/04/2005, 15:21.





1 user(s) are reading this topic

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

IPB Skin By Virteq