Jump to content
Fórum Script Brasil
  • 0

Preciso Enviar Mais De Um Aquivo....


sadrack
 Share

Question

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 to comment
Share on other sites

16 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.8k
    • Total Posts
      648.5k
×
×
  • Create New...