sadrack Postado Agosto 3, 2004 Denunciar Share Postado Agosto 3, 2004 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 ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rog Postado Agosto 3, 2004 Denunciar Share Postado Agosto 3, 2004 você podes colocar quantos input do tipo file você quizerlol Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jcustodio Postado Agosto 3, 2004 Denunciar Share Postado Agosto 3, 2004 Bem, a pasta inteira eu não sei se é possível. 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> </p></body></html> Como vocês puderam observar os nomes do campo 'file' era formádo basicamente assim:Prefixo+numero crescenteentã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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rog Postado Agosto 3, 2004 Denunciar Share Postado Agosto 3, 2004 legaltalvez um sleep para servir de buffer entre cada upload seria legal tblol Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 sadrack Postado Agosto 3, 2004 Autor Denunciar Share Postado Agosto 3, 2004 sim .... jcustodio .. massa mais assim já sei ... quero é fazer por exemplo saum 50 arquivos hj e 60 amanha ... quero q o script faça tudo ... vou bolar um aqui .. melhor vou tentar .. ae posto aqui pra vocês Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Agosto 3, 2004 Denunciar Share Postado Agosto 3, 2004 Utiliza a função do PHP que lê um diretório: readdir()Aí você cria um laço while e vai mandando dar upload em cada arquivo que ele trouxer... Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gladisson Postado Agosto 3, 2004 Denunciar Share Postado Agosto 3, 2004 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;?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fabyo Postado Agosto 3, 2004 Denunciar Share Postado Agosto 3, 2004 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");} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Gladisson Postado Agosto 3, 2004 Denunciar Share Postado Agosto 3, 2004 Esse do Fabyo eu axo que vai ser mais util para o seu caso! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jcustodio Postado Agosto 3, 2004 Denunciar Share Postado Agosto 3, 2004 Pô! Só tem profissional! heheh... Tentei ajudar, mas aprendi muito mais. Valeu galera! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 doulo4ever Postado Agosto 3, 2004 Denunciar Share Postado Agosto 3, 2004 $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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 LuizFumes Postado Agosto 3, 2004 Denunciar Share Postado Agosto 3, 2004 po legal o texto.. muito massa Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 doulo4ever Postado Agosto 3, 2004 Denunciar Share Postado Agosto 3, 2004 hein Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 sadrack Postado Agosto 4, 2004 Autor Denunciar Share Postado Agosto 4, 2004 é isso mesmo quero enviar os files da minha máquina para o servidor .... e não localmente de uma pasta para outra ... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 sadrack Postado Agosto 4, 2004 Autor Denunciar Share Postado Agosto 4, 2004 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 ? .... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Agosto 4, 2004 Denunciar Share Postado Agosto 4, 2004 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. 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ppgsalomao Postado Agosto 4, 2004 Denunciar Share Postado Agosto 4, 2004 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 ! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
sadrack
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
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.