Ir para conteúdo
Fórum Script Brasil
  • 0

Preciso Enviar Mais De Um Aquivo....


sadrack

Pergunta

galera .. seguinte .. essa tag envia um único arquivo....

<form name="form1" method="post" action="page.php" enctype="multipart/form-data">

<input type="file" name="foto">

existe alguma tag q envie uma pasta inteira .. se existe ql é ???

tipo tenho 50 arquivos q quero mandar ... tem como eu fazer isso sem ser um por um ou via ftp ?

Link para o comentário
Compartilhar em outros sites

16 respostass a esta questão

Posts Recomendados

  • 0

Bem, a pasta inteira eu não sei se é possível. huh.gif

Mas, alguém aqui já ensinou a fazer upload de mais de um arquivo simultaneamente.

Eu copiei o texto para estudar. Tá aí:

Fazendo Uploads de Varios arquivos ao mesmo tempo.

É de extrema importancia que antes de fazer qualquer codigo voce primeiro analizar o codigo, montar o codigo na sua cabeça para depois por a ideia em pratica.

Quando nós estamos fazendo uploads de varios arquivos ao mesmo tempo a execucao do script não para enquando ele não enviar todo os arquivos.O PHP tem um tempo limite de execucao, e dependendo do tamanho do arquivo este tempo limite pode estourar ea execucao do codigo vai falhar.

Então é nescessario que voce use uma funcao que o php nos oferece para ELIMINAR o tempo limite de execucao do script. chamada set_time_limit();

Agora vamos por em pratica a ideia de fazer uploads de varios arquivos simultaneos.

Poxa, como sera?

Este script para voce montar sem a ajuda de um tutorial as vezes requer um certo nivel de lógica do programador.

Para montar um sistema onde varios arquivos estarao envolvidos é simples, Primeiro devemos criar o codigo que fará o upload, e depois fazemos uma REPETICAO (loop) com o numero de arquivos ou seja se for 7 arquivos será uma repeticao de 7 loops.

Primeiro vamos contruir o nosso formulário, Lembrando que os formularios que iram trabalhar com arquivos dentro ta tag

devera ser incrementado o código enctype="multipart/form-data" ficando assim:

HTML

1 <FORM enctype="multipart/form-data">

Veja o codigo html do nosso FORMULÁRIO:

HTML

1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>Uploads Simultaneos [ Webtutoriais ]</title>

<meta http-equiv=Content-Type" content="text/html; charset=iso-8859-1">

</head>

<body>

<p><img src="http://www.webtutoriais.com.br/tutoriais/imagens/logotopo.gif" width="300" height="100">

<br>

<font size="2" face="Verdana, Arial, Helvetica, sans-serif">Fazendo Uploads

de Varios arquivos ao mesmo tempo. <br>

</font></p>

<form action="upload_arquivos.php" method="post" enctype="multipart/form-data" name="form1">

<font size="2" face="Verdana, Arial, Helvetica, sans-serif">Arquivo 1:

<input name="arquivo1" type="file">

<br>

Arquivo 2:

<input name="arquivo2" type="file">

<br>

Arquivo 3:

<input name="arquivo3" type="file">

<br>

Arquivo 4:

<input name="arquivo4" type="file" >

<br>

Arquivo 5:

<input name="arquivo5" type="file">

<br>

Arquivo 6:

<input name="arquivo6" type="file">

<br>

Arquivo 7:

<input name="arquivo7" type="file">

<br>

</font><br>

<input type="submit" name="Submit" value="Enviar">

</form>

<br>

<p>&nbsp;</p>

</body>

</html>

Como vocês puderam observar os nomes do campo 'file' era formádo basicamente assim:

Prefixo+numero crescente

então caso quiser fazer com outro nome siga o modelo ex:

foto1,foto2,foto3,foto4.

Ok feito o nosso formulário vamos ao que interessa.

Arquivo upload_arquivos.php:

PHP

1

<?

2 //Elimita o limite de tempo do php_timeout();

3 set_time_limit(0);

4 //Pasta para aonde deve ir os arquivos sem barra do inicio nem final

5 $caminho_dos_arquivos = "Arquivos";

6 for($i=1; $i<=7; $i++)

7 {

8 //pega os nomes dos campos files (prefixo + numero crescente)

9 $id_arquivo = "arquivo".$i;

10 $nome_arquivo = $_FILES[$id_arquivo]["name];

11 $arqv_temporario = $_FILES[$id_arquivo]["tmp_name"];

12 // faz o upload dos arquivos

13

14 if(move_uploaded_file($arqv_temporario, "$caminho_dos_arquivos/$nome_arquivo"))

15 {

16 echo "O Arquivo <b>$nome_arquivo</b> foi concluido com sucesso<BR>";

17 }

18 else

19 {

20 echo "Erro no arquivo <b>$nome_arquivo</b><BR>";

21 }

22 }

23 ?>

Pronto biggrin.gif

Link para o comentário
Compartilhar em outros sites

  • 0

você pode colocar o nome dos arquivos como array, ai você não é preciso ficar toda hora configurando.

<?

$incial_up = 5;

$quant = $_POST['quant'];

if(isset($quant))

{

if($quant==0) $quant = $incial_up;

if(!is_numeric($quant)) $quant = $incial_up;

if(!isset($quant)) $quant = $incial_up;

}

$print  = '<form name="upload" action="upload_multiplo.php" method="post">';

$print .= '<input size="20" type="text" name="quant" value="'.$quant.'">';

$print .= '<input type="submit" name="enviar" value="Modificar Quantidade">';

$print .= '</form>';

for($y=1;  $y<=$quant; $y++)

{

$form_upload .= "Arquivo ".$y.":<input type=\"file\" name=\"ar[]\" size=\"60\"><br><br>";

}

     

$print .= '<form name="upload" action="upload_multiplo.php" method="post" enctype="multipart/form-data">';

$print .= '<input type="hidden" name="quant" value="'.$quant.'">';

$print .= $form_upload;

$print .= '<input type="submit" name="enviar" value="Enviar arquivo">';

$print .= '</form>';

for($i=0;$i<count($ar);$i++) {

     if($ar_name[$i])

     {

         if (is_file($ar[$i]))

         {

         $caminho="C:\\";

         $caminho=$caminho.$ar_name[$i];

         copy($ar[$i],$caminho);

         echo "O arquivo <font color='red'>".$ar_name[$i]."</font> foi enviado!";

         }

         else

         {

         echo "O arquivo <font color='red'>".$ar_name[$i]."</font> não foi enviado!";

         echo "<font color='red'>Caminho ou nome de arquivo Inválido</font>";

         }

     }

}

print $print;

?>

Link para o comentário
Compartilhar em outros sites

  • 0

Eu postei isso na sessao de script mas da uma olhada e ve se serve:

esse script copia todos os arquivos que tiver dentro da pasta escolhida e copia pra outra destinataria escolhida

$pasta = 'pasta_origem';// path da sua pasta de origem

//abrir o diretório

if(!$open = @opendir($pasta)) die('O diretório não é valido!');

//ler o diretório com readdir()

while(($nome_arq = readdir($open)) !== false) {

if($nome_arq == "." or $nome_arq=="..") continue;

copy($nome_arq, "pasta_destinararia/$nome_arq");

}

Link para o comentário
Compartilhar em outros sites

  • 0

$pasta = 'pasta_origem';// path da sua pasta de origem

//abrir o diretório

if(!$open = @opendir($pasta)) die('O diretório não é valido!');

//ler o diretório com readdir()

while(($nome_arq = readdir($open)) !== false) {

if($nome_arq == "." or $nome_arq=="..") continue;

copy($nome_arq, "pasta_destinararia/$nome_arq");

}

Isso só vai funcionar localmente! Ou estou errado?

Quando você enviar isso para o servidor não vai funcionar direito porque ele lê um diretório dentro do servidor! Ou seja, os arquivos já vão estar publicados para fazer isso, o que não é o caso, ele quer enviar todos arquivos de uma determinada pasta do micro dele para o servidor web e não simplesmente mudar os aquivos que já estão no servidor web para outra pasta no servidor web!

Não é verdade?

Link para o comentário
Compartilhar em outros sites

  • 0
Illidian ... cara usei o readdir() pra ler e listar o conteúdo do diretório x .... agora como faço pra manda-lo pra o servidor ? ....

hmmm, não tinha pensado numa coisa: você tem que dar um submit no formulário pra enviar os arquivos! E não tem como dar submits dinamicamente. sad.gif Se fosse copiar de uma pasta pra outra não seria difícil... mas como é upload, não sei como faria isso! Vou pensar um pouco e qualquer coisa eu posto aqui...

Até mais!

Link para o comentário
Compartilhar em outros sites

  • 0

Faz assim oh:

Lista ele como input's do tipo file formando um formulário normal !

Aih cria uma página assim:

<html>

<head>

<script language="JavaScript">

    function form() {

        document.Form1.submit();

    }

</head>

<body onload="javascript: form();">

<form name="Form1" ....>

.........

</form>

</body>

</html>

Por que de uma forma ou de outra o cliente precisa carregar a página para fazer os uploads !

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...