English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico PHP

Tutorial Avançado PHP

PHP & MySQL

Manual de Referência PHP

Upload de Arquivo PHP

Neste tutorial, você aprenderá como usar PHP para uploadar arquivos para um servidor web remoto.

Upload de arquivos com PHP

Neste tutorial, vamos aprender como usar um formulário HTML simples e PHP para upload de arquivos para um servidor remoto. Você pode upload qualquer tipo de arquivo, como imagens, vídeos, arquivos ZIP, documentos do Microsoft Office, PDF, executáveis e outros tipos de arquivos variados.

第1Passo: Criar formulário HTML para upload de arquivo

O exemplo a seguir criará um formulário HTML simples para upload de arquivos.

!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Formulário de Upload de Arquivo</title>
</head>
    <form action="upload-manager.html" method="post" enctype="multipart/form-data">
        <h2>Upload de Arquivo</h2>
        <label for="fileSelect">Nome do arquivo:</label>
        <input type="file" name="photo" id="fileSelect">
        <input type="submit" name="submit" value="Upload">
        <p><strong>Nota:</strong>Permitido apenas os formatos .jpg, .jpeg, .gif, .png, com tamanho máximo de5 MB.</p>
    </form>
</html>

Atenção:Além deseleção de arquivoAlém dos campos, o formulário de upload deve usarHTTP postmétodo e deve conter um enctype="multipart/form-Atributo "data". Este atributo garante que os dados do formulário sejam codificados em dados MIME multi-segmentos, o que é necessário para upload de grandes quantidades de dados binários (por exemplo, imagens, áudio, vídeo, etc.).

第2Passo: Tratar o arquivo uploaded

A seguir está nosso "Upload-O código completo do arquivo "manager.php". Ele armazenará permanentemente o arquivo uploaded na pasta "upload" e executará algumas verificações de segurança básicas, como tipo de arquivo e tamanho do arquivo, para garantir que o usuário upload o tipo de arquivo correto dentro dos limites permitidos.

<?php
//Verificar se o formulário foi submetido
if($_SERVER["REQUEST_METHOD"] == "POST"){
    // Verificar se o arquivo foi uploaded com sucesso
    if(isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0){
        $allowed = array("jpg" => "image"}/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");
        $filename = $_FILES["photo"]["name"];
        $filetype = $_FILES["photo"]["type"];
        $filesize = $_FILES["photo"]["size"];
    
        // Verifique a extensão do arquivo
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
        if(!array_key_exists($ext, $allowed)) die("Erro: Por favor, selecione um formato de arquivo válido.");
    
        // Verifique o tamanho do arquivo-Máximo5MB
        $maxsize = 5 * 1024 * 1024;
        if($filesize > $maxsize) die("Erro: O tamanho do arquivo é maior que o limite permitido.");
    
        // Verifique o tipo MIME do arquivo
        if(in_array($filetype, $allowed)){
            // Verifique se o arquivo existe antes de fazer o upload
            if(file_exists("upload/. $filename)){
                echo $filename . " já existe.";
            } else {
                move_uploaded_file($_FILES["photo"]["tmp_name"], "upload/. $filename);
                echo "Seu arquivo foi uploaded com sucesso.";
            } 
        } else {
            echo "Erro: Problemas ao upload do seu arquivo. Por favor, tente novamente."; 
        }
    } else {
        echo "Erro: " . $_FILES["photo"]["error"];
    }
}
?>

Atenção:Este script previne o upload de arquivos com o mesmo nome que os arquivos existentes na mesma pasta. Mas, se você quiser permitir isso, basta adicionar uma string aleatória ou timestamp no início do nome do arquivo, por exemplo $filename = time() . '_' . $_FILES["photo"]["name"];

Você pode querer saber sobre o que é este código. Bem, vamos percorrer cada parte deste exemplo de código passo a passo para entender melhor este processo.

Explicação do uso do código

Depois que o formulário for submetido, as informações sobre o upload do arquivo podem ser acessadas através do array superglobal PHP $_FILES. Por exemplo, nosso formulário de upload contém um campo de seleção de arquivo chamado photo (ou seja, name = "photo"), se qualquer usuário usar esse campo para upload de arquivo, podemos obter seus detalhes, como nome, tipo, tamanho, nome temporário, ou qualquer erro ocorrido ao tentar upload, conforme mostrado no exemplo a seguir:

  • $_FILES["photo"]["name"] — Este valor do array especifica o nome original do arquivo, incluindo a extensão. Não inclui o caminho do arquivo.

  • $_FILES["photo"]["type"] — Este valor do array especifica o tipo MIME do arquivo.

  • $_FILES["photo"]["size"] — Este valor do array especifica o tamanho do arquivo, em bytes.

  • $_FILES["photo"]["tmp_name"] — Este valor do array especifica o nome temporário, incluindo o caminho completo atribuído ao arquivo após o upload ao servidor.

  • $_FILES["photo"]["error"] — Este valor do array especifica o erro ou código de status relacionado ao upload do arquivo, por exemplo, se não houver erro, será 0.

O código PHP no exemplo a seguir exibirá apenas os detalhes do arquivo carregado e o armazenará na pasta temporária do servidor web.

<?php
if($_FILES["photo"]["error"] > 0) {
    echo "Erro: " . $_FILES["photo"]["error"] . "<br>";
} else {
    echo "Nome do arquivo: " . $_FILES["photo"]["name"] . "<br>";
    echo "Tipo do arquivo: " . $_FILES["photo"]["type"] . "<br>";
    echo "Tamanho do arquivo: " . ($_FILES["photo"]["size"] / 1024) . " KB<br>";
    echo "Armazenado em: " . $_FILES["photo"]["tmp_name"];
}
?>

Dica:Após o upload bem-sucedido do arquivo, ele será armazenado automaticamente na pasta temporária do servidor. Para armazenar permanentemente este arquivo, você precisa usar a função move_uploaded_file() do PHP para movê-lo da pasta temporária para o local permanente.