Triple information

Asked

Viewed 57 times

0

I made this code and must move three images to the specified folder. He names the three images, but is only moving the first.

I’ve made some modifications to the code, but unfortunately it doesn’t work.

Could give me a light on how to move the three images to the destination folder?

<form method="post" enctype="multipart/form-data" action="../APIChamados/recebeUpload.php">
Selecione uma imagem: <input name="arquivo1" type="file">
<br>
Selecione uma imagem: <input name="arquivo2" type="file">
<br>
Selecione uma imagem: <input name="arquivo3" type="file">
<br>
<input type="submit" value="Salvar">
</form>


<?php

    // verifica se foi enviado um arquivo
    if ( isset( $_FILES[ 'arquivo1' ][ 'name' ]  ) && $_FILES[ 'arquivo1' ][ 'error' ] == 0 ) {
        echo 'Você enviou o arquivo: <strong>' . $_FILES[ 'arquivo1' ][ 'name' ] . '</strong><br />';
        echo 'Você enviou o arquivo: <strong>' . $_FILES[ 'arquivo2' ][ 'name' ] . '</strong><br />';
        echo 'Você enviou o arquivo: <strong>' . $_FILES[ 'arquivo3' ][ 'name' ] . '</strong><br />';
        echo 'Este arquivo é do tipo: <strong > ' . $_FILES[ 'arquivo1' ][ 'type' ] . ' </strong ><br />';
        echo 'Este arquivo é do tipo: <strong > ' . $_FILES[ 'arquivo2' ][ 'type' ] . ' </strong ><br />';
        echo 'Este arquivo é do tipo: <strong > ' . $_FILES[ 'arquivo3' ][ 'type' ] . ' </strong ><br />';
        echo 'Temporáriamente foi salvo em: <strong>' . $_FILES[ 'arquivo1' ][ 'tmp_name' ] . '</strong><br />';
        echo 'Seu tamanho é: <strong>' . $_FILES[ 'arquivo1' ][ 'size' ] . '</strong> Bytes<br /><br />';

        $arquivo_tmp = $_FILES[ 'arquivo1' ][ 'tmp_name' ];
        $nome = $_FILES[ 'arquivo1' ][ 'name' ];

        // Pega a extensão
        $extensao = pathinfo ( $nome, PATHINFO_EXTENSION );

        // Converte a extensão para minúsculo
        $extensao = strtolower ( $extensao );

        // Somente imagens, .jpg;.jpeg;.gif;.png
        // Aqui eu enfileiro as extensões permitidas e separo por ';'
        // Isso serve apenas para eu poder pesquisar dentro desta String
        if ( strstr ( '.jpg;.jpeg;.gif;.png', $extensao ) ) {
            // Cria um nome único para esta imagem
            // Evita que duplique as imagens no servidor.
            // Evita nomes com acentos, espaços e caracteres não alfanuméricos
            $novoNome = uniqid ( time () ) . '.' . $extensao;

            // Concatena a pasta com o nome
            $destino = 'C:/xampp/htdocs/img/'.$novoNome;

            // tenta mover o arquivo para o destino
            if ( @move_uploaded_file ( $arquivo_tmp, $destino ) ) {
                echo 'Arquivo salvo com sucesso em : <strong>' . $destino . '</strong><br />';
                echo ' < img src = "' . $destino . '" />';
            }
            else
                echo 'Erro ao salvar o arquivo. Aparentemente você não tem permissão de escrita.<br />';
        }
        else
            echo 'Você poderá enviar apenas arquivos "*.jpg;*.jpeg;*.gif;*.png"<br />';
    }
    else
        echo 'Você não enviou nenhum arquivo!';

?>
  • You perform move_uploaded_file ($arquivo_tmp, $destino), whereas $arquivo_tmp is defined as $_FILES['arquivo1']['tmp_name'], then it is expected that only move the first one. To move the three, you need to call the function for each of them.

  • I’ll try here

  • Should it look like this? // tries to move the file to destination if ( @move_uploaded_file ( $arqui_tmp, $destination ) { $i=0; foreach($_FILES['file'] as $img){ switch($_FILES['type'] [$i]){ echo 'File successfully saved in : <Strong>' . $destination . '</Strong><br />'; echo ' < img src = "' . $destination . '" />'; } } }

1 answer

0


You only run move_upload_file for file. Change the snippet where you move the file to the destination for a Function and transfer your $_FILES to your new Function

Would be next:

<?php
// verifica se foi enviado um arquivo
if ( isset( $_FILES[ 'arquivo1' ][ 'name' ]  ) && $_FILES[ 'arquivo1' ][ 'error' ] == 0 ) {
    echo 'Você enviou o arquivo: <strong>' . $_FILES[ 'arquivo1' ][ 'name' ] . '</strong><br />';
    echo 'Você enviou o arquivo: <strong>' . $_FILES[ 'arquivo2' ][ 'name' ] . '</strong><br />';
    echo 'Você enviou o arquivo: <strong>' . $_FILES[ 'arquivo3' ][ 'name' ] . '</strong><br />';
    echo 'Este arquivo é do tipo: <strong > ' . $_FILES[ 'arquivo1' ][ 'type' ] . ' </strong ><br />';
    echo 'Este arquivo é do tipo: <strong > ' . $_FILES[ 'arquivo2' ][ 'type' ] . ' </strong ><br />';
    echo 'Este arquivo é do tipo: <strong > ' . $_FILES[ 'arquivo3' ][ 'type' ] . ' </strong ><br />';
    echo 'Temporáriamente foi salvo em: <strong>' . $_FILES[ 'arquivo1' ][ 'tmp_name' ] . '</strong><br />';
    echo 'Seu tamanho é: <strong>' . $_FILES[ 'arquivo1' ][ 'size' ] . '</strong> Bytes<br /><br />';

    foreach ($_FILES as $file) {
        move_file($file);
    }
}
else{
    echo 'Você não enviou nenhum arquivo!';
}


function move_file($file)
{
    $arquivo_tmp = $file[ 'tmp_name' ];
    $nome = $file[ 'name' ];

    // Pega a extensão
    $extensao = pathinfo ( $nome, PATHINFO_EXTENSION );

    // Converte a extensão para minúsculo
    $extensao = strtolower ( $extensao );

    // Somente imagens, .jpg;.jpeg;.gif;.png
    // Aqui eu enfileiro as extensões permitidas e separo por ';'
    // Isso serve apenas para eu poder pesquisar dentro desta String
    if ( strstr ( '.jpg;.jpeg;.gif;.png', $extensao ) ) {
        // Cria um nome único para esta imagem
        // Evita que duplique as imagens no servidor.
        // Evita nomes com acentos, espaços e caracteres não alfanuméricos
        $novoNome = uniqid ( time () ) . '.' . $extensao;

        // Concatena a pasta com o nome
        $destino = 'C:/xampp/htdocs/img/'.$novoNome;

        // tenta mover o arquivo para o destino
        if ( @move_uploaded_file ( $arquivo_tmp, $destino ) ) {
            echo 'Arquivo salvo com sucesso em : <strong>' . $destino . '</strong><br />';
            echo ' < img src = "' . $destino . '" />';
        }
        else{
            echo 'Erro ao salvar o arquivo. Aparentemente você não tem permissão de escrita.<br />';
        }
    }
    else{
        echo 'Você poderá enviar apenas arquivos "*.jpg;*.jpeg;*.gif;*.png"<br />';
    }
}
?>
  • You are giving this error Parse error: syntax error, Unexpected 'Else' (T_ELSE) in C: xampp htdocs webcalled Apichamados receive.php on line 17

  • Failed to close the key "}" of the first IF, changed the code, check now.

  • Is giving as an undefined variable: You sent the file: logoDanfeDM.jpg You sent the file: logoDanfeFrut.jpg You sent the file: logoDanfeItaly.jpg This file is of type: image/jpeg This file is of type: image/jpeg This file is of type: image/jpeg Temporarily saved in: C: xampp tmp php5D66.tmp Its size is: 28257 Bytes Notice: Undefined variable: file in C: xampp htdocs webchamados Apichamados receivedUpload.php on line 13 Warning: Invalid supplied argument for foreach() in C: xampp htdocs webchamados Apichamados receivedUpload.php on line 13

  • Strange that the others I have not declared anything (in some other way than what is), and are running normal.

  • Edited again, problem was in foreach.

  • Aumentou: Notice: Undefined index: arquivo1 in C: xampp htdocs webchamados Apichamados recebeUpload.php on line 24 Notice: Undefined index: arquivo1 in C: xampp htdocs webchamados Apichamados recebeUpload.php on line 25 Warning: strstr(): Empty Needle in C: xampp htdocs webchamados Apichamados recebeUpload.php on line 36 I changed 'archive1' to 'file' and nothing....

  • I made one more change, I tested it here and at first it worked.

  • Show man, it was beautiful!!! Thanks even for the help!!!

Show 3 more comments

Browser other questions tagged

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