• 0
Sign in to follow this  
gabrielthomaz6

upload múltiplo apenas de imagens

Question

Boa tarde, sou iniciante em php e estou querendo fazer um upload múltiplo de imagens com o banco de dados MySQL, venho procurado vários modelos na internet, mas nenhum funcionou corretamente, tentei até fazer correções. Hoje encontrei este código abaixo, que está funcionando corretamente, mas eu não estou conseguindo fazer a alteração de nome, por exemplo, a primeira foto inserida, seria foto1, a segunda inserida, foto2, e assim por diante, pois está inserindo com o nome original da imagem... Pois cada "conjunto" de fotos, ficariam em diferentes pastas que são de usuários, coisa que já está pronta, ou seja, gostaria de fazer agora essa alteração, pois em cada pasta de usuário, teria as fotos denominadas "foto1, foto2..." Será que podem me ajudar? Segue o código abaixo. O CÓDIGO NÃO É MEU, EU GOSTARIA DE ENTENDÊ-LO SE FOSSE POSSÍVEL, mas está realmente muito difícil, agradeço por qualquer forma de ajuda.

index.php

<?php
include "conexao.inc";
?>


<form action="valida.php" method="POST" enctype="multipart/form-data">
    <input type="file" name="files[]" accept="image/*" multiple/>
    <input type="submit"/><br><br>
    
<?php 
$files = glob("user_data/*.*");
for ($i=1; $i<count($files); $i++) { 
    $num = $files[$i]; echo '    <li--><img alt="random image" src="'.$num.'" style="width:200px;height:200px" />'; 
}
?>
</form>
 

 

valida.php

 

<?php
include "conexao.inc";

if(isset($_FILES['files'])){
    $errors= array();

    foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
        $file_name = $key.$_FILES['files']['name'][$key];
        $file_size =$_FILES['files']['size'][$key];
        $file_tmp =$_FILES['files']['tmp_name'][$key];
        $file_type=$_FILES['files']['type'][$key];    
        if($file_size > 2097152){
            $errors[]='File size must be less than 2 MB';
        }        
        $query="INSERT into upload_data (`FILE_NAME`,`FILE_SIZE`,`FILE_TYPE`) VALUES('$file_name','$file_size','$file_type'); ";
        $desired_dir="user_data";
        if(empty($errors)==true){
            if(is_dir($desired_dir)==false){
                mkdir("$desired_dir", 0700);        // Create directory if it does not exist
            }
            if(is_dir("$desired_dir/".$file_name)==false){
                move_uploaded_file($file_tmp,"$desired_dir/".$file_name);
            }else{                                    // rename the file if another one exist
                $new_dir="$desired_dir/".$file_name.time();
                 rename($file_tmp,$new_dir) ;                
            }
         mysqli_query($conexao, $query);            
        }else{
                print_r($errors);
        }
    }
    if(empty($error)){
        echo $file_name;
        echo $file_tmp;
        echo "Success";
    }
}
?>

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Você precisa criar uma regra de como serão os nomes das pastas dos usuários.

<?php 
$files = glob("user_data/*.*");

Aqui ele lê e exibe as imagens salvas, mas repara que a pasta está "fixa", você tem que faze-la mudar conforme o usuário, com uma variável.

<?php
$desired_dir = "user_data";

A mesma variável tem que preencher a $desire_dir
 

<?php
$file_name = $key.$_FILES['files']['name'][$key];

E é dentro de $file_name que você coloca o nome da foto "foto1", "foto2"...

Share this post


Link to post
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.

Sign in to follow this