implode(): Invalid Arguments passed

Asked

Viewed 43 times

-1

I’m working on a system for uploading contents and various photos in which I need change file names using md5 hash and creating a string with the new names but I’m finding it difficult to use MD5 with implode;

//segue parte do meu código
$string = implode( ";", md5($fotos['name']) );
                   echo $string;
}

//segue o erro
implode(): Invalid arguments passed

//Queria que a string final fosse algo como:
46e3cca98604344b0dcc1dfbf4d96c68.jpg;abfb69de2141ef5002ce364ccf7af37d.jpg;


//código completo
//faz a conexão
include( "../../../include/funcoes/conexao.php" );
//calcula o tamanho do arquivo
include( "../../../include/funcoes/tamanho-arquivo.php" );

//resgata as variáveis
$titulo = $_POST["titulo"];
$categoria = $_POST["categoria"];
$conteudo = addslashes( $_POST["texto"] );
$status = $_POST["status"];
$tag = $_POST["tag"];

//inicia a função
if ( isset( $_FILES['arquivos'] ) && !empty( $_FILES['arquivos']['name'] ) ) {
    //pega o nome
    $fotos = $_FILES['arquivos'];
    //quantidade de fotos
    $total = count( $fotos['name'] );
    //executa o laço
    for ( $i = 0; $i < $total; $i++ ) {
   //pega o caminho
        $caminho = "../fotos/";
        //pega o nome
        $nome = pathinfo( $fotos['name'][$i], PATHINFO_FILENAME );
        //pega a extensão
        $entensao = pathinfo( $fotos['name'][$i], PATHINFO_EXTENSION );
        //pega o endereço do arquivo, nome e a extensão
        $nome_final = $caminho.md5($nome).".".$entensao;
        //pega o tamanho do arquivo
        $tamanho = tamanho_arquivo( $caminho.md5($nome).".".$entensao );
        //verifica a extensão do arquivo
        if ( $entensao != "jpg" and $entensao != "jpeg" and $entensao != "png" and $entensao != "webp" and $entensao != "gif" ) {
            //exibe a mensagem
            echo "O arquivo precisa ser uma imagem";
        } else {
            //verifica o tamanho
            if ( $tamanho >= "1024" ) {
                //exibe a mensagem
                "O arquivo é muito grande. É preciso carregar fotos com menos de 1MB";
            } else {
                //executa o upload
                if ( move_uploaded_file( $fotos['tmp_name'][$i], $nome_final ) ) {

                    //exibe a mensagem
                    echo "Upload realizado com sucesso";
                
                    
                    
                } else {
                    //exibe a mensagem
                    echo "Houve um erro com upload do arquivo, por favor verifique o tamanho das imagens e tente novamente!";
                }
            }
        }
    }
}

$string = implode( ";", md5($fotos['name']) );
echo $string;

1 answer

1


There are 2 problems going on in the code. The first is that the function md5() expects to have a string as parameter and in the code you are passing an array to it ($fotos['name']):

$string = implode( ";", md5($fotos['name']) );

The other problem is that the second parameter of the function implode() should be an array and, as the function md5() returns a string, the error implode(): Invalid arguments passed appears.

One way to solve the problem is to create a new array with the names of the already formatted photos and then pass this array into the function implode():

$fotos_renomeadas = []; 
foreach ($fotos['name'] as $key=>$foto){
        $fotos_renomeadas[$key] = md5($foto).".jpg";
}
$string = implode( ";", $fotos_renomeadas);
echo $string;

The output will be:

# Considerando fotos['name'] = ['img1','img2']

a8a63b4d63a08aed720d0f5f249e07d9.jpg;fe5067706fde605fcc635835a1e52fc8.jpg
  • 1

    Thanks! Solved. Holy wisdom, huh Batman?

Browser other questions tagged

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