Multiple upload of troublesome images

Asked

Viewed 68 times

1

My upload system did not give error until testing on a server there that returns me folder permission error, for when it will generate the folder with the title that comes from the post method, does not generate the folder and does not upload multiple. I already changed folder permission with server staff and nothing.

Follow the file code :

// Incluir o arquivo conecta.php que faz a conexão com o banco de dados
include "conecta.php" ;

//Dou um Extract e jogo o valor dentro da variavel $arq1
  extract($_POST);
  $arq1=$_FILES["imagem"]["name"];
//Seleciona a ultima entrada do banco na tabela galeria
  $s_trab = "SELECT ID
                 FROM noticias";
  $t_trab = mysql_query($s_trab) or die(mysql_error());  
  $trab   = mysql_fetch_array($t_trab);
//Dou um nome para a foto que será o ultimo id + 1
  $nome = $trab[id] + 1;
//crio um nome único para a imagem
  $arq1 = $nome.$_FILES['imagem']['name'];
//cria um nome temporário para mover o arquivo
  $arq1_tmp = $_FILES['imagem']['tmp_name'];
//Comando para mover o arquivo para o diretório especificado, aplicando o nome definido anteriormente
  move_uploaded_file($arq1_tmp,"foto_noticias/".$arq1);

// galeria 
$p = 0;
$countArr = count($_FILES['arquivo']['name']);
for($i = 0; $i < $countArr; $i++){

  // verifica se foi enviado um arquivo 
  if(isset($_FILES['arquivo']['name'][$i]))
  {

    $arquivo_tmp  = $_FILES['arquivo']['tmp_name'][$i];
    $nome         = $_FILES['arquivo']['name'][$i];

    // Pega a extensao
    $extensao = strrchr($nome, '.');

    // Converte a extensao para mimusculo
    $extensao = strtolower($extensao);

    // Somente imagens, .jpg;.jpeg;.gif;.png
    if(strstr('.jpg;.jpeg;.gif;.png;.bmp', $extensao))
    {
      // Cria um nome único para esta imagem
      $novoNome = md5(microtime()) . $extensao;

      if($p == 0){
        $trataEspaco = str_replace(" ", "", $_POST['titulo']);
        @mkdir('foto_noticias/galeria/'.$trataEspaco.'/');
        $p = 1;
      }

      // Concatena a pasta com o nome
      $destino = 'foto_noticias/galeria/'.$trataEspaco.'/' . $novoNome;

      // tenta mover o arquivo para o destino
      if(@move_uploaded_file( $arquivo_tmp, $destino))
      {
        echo "Fotos salvas com sucesso!";
      }
      else
       echo "Permissao!";
    }
    else
      echo ".jpg;*.jpeg;*.gif;"; 
  }
  else
  {
    echo "Você não enviou nenhum arquivo!";
  }

}
// fim da galeria

//Gravando o nome do arquivo e a legenda na tabela do banco de dados  

  $i_galeria = "INSERT INTO noticias (  post_title , post_name, imagem, post_content, post_date, status) VALUES 
  (  '$_POST[titulo]', '$_POST[chamada]', '$arq1', '$_POST[descricao]', now(), $_POST[status])";
    mysql_query($i_galeria) or die (mysql_error());

//Retorno a página de formulário
echo "
 <script language='javascript'>
 alert('Dados adquididos com sucesso!');
 parent.location='noticias_admin.php';
   </script>
";
?>
  • 1

    Today I’m gonna play that boring guy who says so: You could post exactly what is the error message returned in the exception?

  • @C.Bohok it returns like this : permission! permission! and does not record anything

  • @Acompanhiaweb The folder with the value of $treatThe space is not being created?

  • Even after you have released the folder permission with the server staff keeps giving permission error?

  • 1

    It worked out guys thanks, thanks for the tips

1 answer

1

I believe the error is in the creation of the folder and you only declare $trataEspaço if $p = 0 ,Try it this way:

$countArr = count($_FILES['arquivo']['name']);
for($i = 0; $i < $countArr; $i++){

  // verifica se foi enviado um arquivo 
  if(isset($_FILES['arquivo']['name'][$i]))
  {

    $arquivo_tmp  = $_FILES['arquivo']['tmp_name'][$i];
    $nome         = $_FILES['arquivo']['name'][$i];

    // Pega a extensao
    $extensao = strrchr($nome, '.');

    // Converte a extensao para mimusculo
    $extensao = strtolower($extensao);

    // Somente imagens, .jpg;.jpeg;.gif;.png
    if(strstr('.jpg;.jpeg;.gif;.png;.bmp', $extensao))
    {
      // Cria um nome único para esta imagem
      $novoNome = md5(microtime()) . $extensao;
      $trataEspaco = preg_replace("/[^a-zA-Z0-9]/", "", $_POST['titulo']);

      if (!file_exists('/foto_noticias/galeria/' . $trataEspaco)) {
          mkdir('/foto_noticias/galeria/' . $trataEspaco, 0777, true);
      }
      // Concatena a pasta com o nome
      $destino = '/foto_noticias/galeria/'.$trataEspaco.'/' . $novoNome;

      // tenta mover o arquivo para o destino
      if(move_uploaded_file( $arquivo_tmp, $destino))
      {
        echo "Fotos salvas com sucesso!";
      }
      else
       echo "Permissao!";
    }
    else
      echo ".jpg;*.jpeg;*.gif;"; 
  }
  else
  {
    echo "Você não enviou nenhum arquivo!";
  }

}

If it still doesn’t work believe that php can’t find the path to it tries to get the absolute path and join to the path you already have, so:

PHP >= 5.3.0

Usa: __DIR__

Example:

 $destino = __DIR__ . '/foto_noticias/galeria/'.$trataEspaco.'/' . $novoNome;

PHP < 5.3.0

Usa: dirname(__FILE__)

example:

 $destino = dirname(__FILE__) . '/foto_noticias/galeria/'.$trataEspaco.'/' . $novoNome;

Note

Replaces the str_replace for preg_replace("/[^a-zA-Z0-9]/", "", $_POST['titulo']); 'cause I think you’re gonna get more security guard when creating the folder, the folder removes all characters not alpha-numeric

Browser other questions tagged

You are not signed in. Login or sign up in order to post.