Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Capella

Como fazer uploads de varios arquivos

Recommended Posts

Salve galerinha,

 

tenho visto varias duvidas sobre multiplos uploads vindo do formulário, então resolvi fazer esse tutorial explicando como enviar varios arquivos e gravando no bd.

 

então vou explicar as as funções que usarei nesse tutorial.

 

Função move_uploaded_file : http://www.php.net/manual/pt_BR/function.m...loaded-file.php

essa função upda o arquivo para o diretorio informado, caso ela não consiga enviar retorna um erro.

 

Função substr : http://www.php.net/manual/pt_BR/function.substr.php

essa função imprime a quantidade de caracteres informados, pode ser de tras para fentre, basta coloca o - na quantidade de caracteres.

 

Função strtolower : http://www.php.net/manual/pt_BR/function.strtolower.php

Função será responsavel para colocar todas as letras da string em minusculas

 

Função mkdir : http://www.php.net/manual/pt_BR/function.mkdir.php

Função responsável em criar um determinado diretorio.

usamos essa função dentro de um if de uma verificação da função file_exists, se o retorno da função for falso usamos a função mkdir para criar o diretorio.

 

Função file_exists : http://www.php.net/manual/pt_BR/function.file-exists.php

Função informada acima, que tem pela sua definição em verificar se existe ou não o diretorio.

 

bem algumas funções foram informadas, agora vamos para a lógica.

 

Primeiro vamos criar o formulário com as campos files.

 

<html><body>Enviando varios arquivos usando um array<form action="up_varios.php" method="post" enctype="multipart/form-data"><!-- nesse form abaixo eu indico o nome através de um array -->Imagem: <input type="file" name="files[]" /><br>Imagem2: <input type="file" name="files[]" /><br>Imagem3: <input type="file" name="files[]" /><br>Imagem4: <input type="file" name="files[]" /><br>Imagem5: <input type="file" name="files[]" /><br><input type="submit" value="Enviar varios" /></form></body></html>

Pronto o formulário para envio está pronto agora vamos desenvolver o arquivo para receber essa imagens.

 

Pagina up_varios.php

 

<?php
//vamos explicar essa parte aqui.
$con = "conexao.php";
//recebo o caminho do arquivo conexão na variável $con.

//verifico nesse primeiro if se o caminho recebido é valido.
if(file_exists($con)){
 //se não for valido, pedo o endereço e baixo 1 nivel o mesmo que "../".
 //e crio uma nova variácel de conexão
 $novaCon = $_SERVER['DOCUMENT_ROOT']."/$con";
 //verifico se a nova variável é existente ou nao.
 if(!file_exists($novaCon)){
     // se não existir na sugunda tentativa, saio do programa.[
     exit("A conexão com o banco de dados, não pode ser estabelecida, contat o administrador.");
 }
 else{
     //se a segunda reuisição existir incluo usando a função require_once
     require_once($novaCon);
     }
 } 
 else {
//se a primeira ja for válida ja incluo a conexão informada na variável.
 require_once($con);
}

//aqui verificamos se o diretorio existe;
$dir = "imagens/"

if(!file_exists($dir)){
mkdir($dir);
//bem em servidores linux, você precisa permitir o acesso as pastas.
/*
chmod($dir,777);
*/
//aqui vamos utilizar a quantidade fixa de uploads
for($i=0;$i < 5; $i++){
 $erro= "";

 //vamos receber essas imagens.[/color]
 $foto = $_FILES["files"]["name"][$i];
 $fotoType = $_FILES["files"]["type"][$i];
 $fotoSize = $_FILES["files"]["size"][$i];
 $fotoTmp = $_FILES["files"]["tmp_name"][$i];

 $fotoNova = strtolower($foto);
 $diretorio = $dir.$fotoNova;
 //pronto recebemos e indicamos
 /* assim vale pela necesskidade de cada codigo, podemos renomear ou verificar o tipo da imagem
*/
 //vamos usar o substr para verificar a extenção

 if(substr($foto,-4) != ".jpg"){
 $erro = "Extenção não permitida.";
 }
 if(empty($foto){
 $erro = "Campos nao pode ser vazio.";
 //vem essa verificação é para indicar quie todos os campos devem estar preenchidas
 }
 if($fotoSize > "20000"){
 $erro  =  "Arquivo é maior que o permitido.";
 }
 if($erro != ""){
 echo $erro;
 }
 else{
 //aqui se todas as informação forem verdadeiras faço o up e gravo no banco.
 $up = move_uploaded_file($fotoTmp,$diretorio);
 if(!$up){
  echo 'Erro ao enviar arquivo';
  //antes de gravar vejo se o arquivo foi upado, caso contrario para por aqui mesmo.
  exit;
  }
  else{
  // se upar gtavo no banco.
  $query = mysql_query("INSERT INTO imagens(foto) values('$fotoNova')");
  if($query != 0){
  echo "Arquivos enviados. $i";
  }
  else{
  echo "Erro.";
 }
}

?>

 

Pronto a pagina up_varios.php ja está pronto e recebendo os arquivos. então agora vamos para o arquivo de conexão.

 

bem é simples.

<?php
$con = mysql_connect("localhost","root","123456") or die(mysql_error());
$db = mysql_select_db("imagens",$con)) or die(mysql_error());
?>

 

arquivo de conexão pronto.

 

vamos para a tabela.

 

CREATE TABLE imagens
(
id int,
imagens varchar(30)
);

 

bem simples.

 

bem espero que gostem..

 

e quem tiver ideia os melhorias. so informar.

 

:)

 

abraço a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bacana, Capella. Parabéns pelo tutorial http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Recomendaria apenas a fazer algumas validações, principalmente para o include de conexão. Se não existir, cancela o processamento e envia mensagem amigável ao usuário. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu anderson,bem coloquei uma verificação no arquivo de conexão logo de inicio, se não existir ele para de executar o programa,e outra que cloquei é uma do tamanho do arquivo. se for maior tambem retorna erro.acha interesante uma expressão regular para verificar o tipo do arquivo???

Compartilhar este post


Link para o post
Compartilhar em outros sites

sei que esse topico e antigo mas nao vi outro exemplo parecido alguem poderia arrumar o codigo nao to entendendo /= tentei editar manualmente mas deu erros /=

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quais erros @wdc_black_ ?

 

esse tópico é bem antigo já, certamente dá para fazer melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.