English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste tutorial, você aprenderá como usar PHP para uploadar arquivos para um servidor web remoto.
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.
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.).
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.
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.