File Upload

<< Click to Display Table of Contents >>

Navigation:  Dicas >

File Upload

Previous pageReturn to chapter overviewNext page

2 arquivos

 

form.php

 

<form name="post" action="./aqui.php?post=true" method="post" enctype="multipart/form-data">
    <p style="margin-bottom: 10px; text-align: right"><a href="./aqui.php" title="Atualizar">Atualizar</a></p>
    <input type="file" name="arquivo">
    <button>Enviar</button>
</form>

 

aqui.php

 

// pasta destino dos uploads
$pasta = __DIR__ . "/arquivos";
 
// para ver os limites do servidor
 
// tamanho de arquivo
echo "<p>" . ini_get("upload_max_filesize") . "</p>";
 
// tamanho de todo os post (variaveis e arquivos)
echo "<p>" . ini_get("post_max_size") . "</p>";
 
// tipos de arquivo de php
var_dump([
    filetype(__DIR__ . "/aqui.php"),
    mime_content_type(__DIR__ . "/aqui.php")
]);
 
// isso é para que saiba que foi feito um post - mesmo que o arquivo não foi valido
// é um truque de programação para detectar um envio com arquivo muito grande
// pois o php não avisa quando é muito grande, simplesmente ignora o arquivo
$getPost = filter_input(INPUT_GET"post"FILTER_VALIDATE_BOOLEAN);
 

// se não tem arquivos para envio
if ($_FILES) {
 
    // nao está em branco o arquivo?
    if (empty($_FILES['arquivo']['name'])) {        
        // então nao pegou nada        
        echo "<p style='color: red;'>Selecione um arquivo!</p>";
    } else {
        // mostra os arquivos       
        $arquivos = $_FILES['arquivo'];
        var_dump($arquivos);
        
        // tipos que vou permitir
        $permitidos = [
            "image/jpg",
            "image/jpeg",
            "image/png",
            "application/pdf"
        ];
        
        // novo nome é hora atual + extensao do arquivo que tá subindo
        $novo = time().mb_strstr($arquivos['name'], ".");
        
        var_dump($novo);
        
        // se nosso arquivo está nos tipos permitidos
        if (in_array($arquivos['type'], $permitidos)) {
            
            if (move_uploaded_file($arquivos['tmp_name'], $pasta."/".$novo)) {
                echo "<p style='color: green;'>Tudo certo!</p>";
            } else {
                echo "<p style='color: red;'>Erro ao subir arquivo</p>";
            }
            
        } else {
            echo "<p style='color: red;'>Tipo de arquivo não permitido</p>";
        }
        
    }
  // else = foi feito post mas sem arquivo  
elseif ($getPost) {
    echo "<p style='color: red;'>Arquivo muito grande?</p>";
}
 
include __DIR__ . "./form.php";