Multiple upload of images with problems

1

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

Here is the code for the file:

// 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>
";
?>
    
asked by anonymous 28.08.2017 / 12:18

1 answer

1

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

$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 does not work I believe that php can not find the way to it, try to get the absolute path and join the path you already have,

PHP > = 5.3.0

Use:   __ DIR __

Example:

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

PHP < 5.3.0

Use: dirname (__ FILE __)

example:

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

Note

Replace str_replace with preg_replace("/[^a-zA-Z0-9]/", "", $_POST['titulo']); because I think it will guarantee more security when creating the folder, it will remove all non- alpha-numeric characters

    
28.08.2017 / 16:57