Upload de arquivo Laravel: um tutorial passo a passo abrangente
Publicados: 2024-10-07Índice
Carregamento de arquivo Laravel
O upload de arquivos é um recurso essencial em muitos aplicativos da web, permitindo aos usuários fazer upload de vários tipos de arquivos, como imagens, documentos ou vídeos. Laravel, um framework PHP popular, oferece uma maneira fácil e segura de lidar com uploads de arquivos. Neste tutorial, exploraremos como configurar e implementar uploads de arquivos no Laravel do zero. Quer você seja um desenvolvedor iniciante ou intermediário, este guia o ajudará a dominar o upload de arquivos no Laravel.
1. Introdução ao upload de arquivos Laravel
Os uploads de arquivos são essenciais para aplicativos da web modernos. Seja enviando fotos de perfil, currículos ou conteúdo multimídia, é crucial ter um sistema de upload de arquivos confiável e seguro. O Laravel, com suas funções integradas, torna esse processo simples e eficiente. Com suporte para validação, armazenamento e segurança de arquivos, o Laravel oferece uma maneira perfeita de gerenciar uploads de arquivos.
Neste tutorial, iremos:
- Crie um formulário de upload de arquivo.
- Lidar com validação de arquivo.
- Armazene arquivos no servidor.
- Exiba os arquivos carregados.
- Proteja o processo de upload de arquivos.
Ao final deste guia, você terá um conhecimento sólido de como implementar e personalizar uploads de arquivos em aplicações Laravel.
2. Pré-requisitos
Antes de mergulhar no tutorial, certifique-se de que o seguinte esteja instalado em sua máquina:
- PHP >= 8.0
- Composer(Gerenciador de Dependências para PHP)
- Laravel 9 ou superior
- MySQL ou SQLitepara gerenciamento de banco de dados
- Conhecimento básico de Laravel e PHP
Se você não está familiarizado com como configurar o Laravel, consulte a documentação oficial do Laravel ou use o seguinte comando para criar um novo projeto Laravel:
festa
Copiar código
compositor criar-projeto –prefer-dist laravel/laravel file-upload-tutorial
Depois que o projeto for criado, navegue até a pasta do projeto:
festa
Copiar código
CD-tutorial de upload de arquivo
3. Configurando um Projeto Laravel
Assim que seu projeto Laravel estiver configurado, vamos definir as configurações básicas:
Configuração do banco de dados:Abra o arquivo .env no diretório raiz e atualize as credenciais do seu banco de dados. Se você estiver usando MySQL, atualize os seguintes campos:
texto simples
Copiar código
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_upload
DB_USERNAME = raiz
DB_SENHA=
Após configurar o arquivo .env , execute o seguinte comando para migrar as tabelas padrão:
festa
Copiar código
php artesão migrar
A. Instale o Bootstrap (opcional)
Para estilizar o formulário de upload, você pode incluir o Bootstrap para facilitar. Na pasta resources/views/layouts , crie um arquivo layout.blade.php e inclua Bootstrap:
HTML
Copiar código
<!DOCTYPEhtml>
<html lang=”en”>
<cabeça>
<meta conjunto de caracteres=”UTF-8″>
<meta name=”viewport” content=”largura=largura do dispositivo, escala inicial=1,0″>
<title>Tutorial de upload de arquivo</title>
<link href=”https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css” rel=”folha de estilo”>
</head>
<corpo>
<div classe=”contêiner mt-5″>
@rendimento('conteúdo')
</div>
</body>
</html>
4. Criando o formulário de upload de arquivo
Agora, vamos criar um formulário de upload de arquivo.
Crie um controlador:gere um controlador para lidar com uploads de arquivos:
festa
Copiar código
php artesão make:controller FileUploadController
Defina o Formulário:Na pasta resources/views , crie um arquivo chamado upload.blade.php com o seguinte código:
HTML
Copiar código
@extends('layouts.layout')
@seção('conteúdo')
<div classe=”linha”>
<div classe=”col-md-6 deslocamento-md-3″>
<h3 class=”text-center”>Fazer upload de um arquivo</h3>
<form action=”{{ route('file.upload.post') }}” método=”POST” enctype=”multipart/form-data”>
@csrf
<div classe=”grupo de formulário mb-3″>
<label for=”arquivo”>Escolha um arquivo:</label>
<tipo de entrada=”arquivo” classe=”controle de formulário” nome=”arquivo” id=”arquivo”>
@erro('arquivo')
<small class=”text-danger”>{{ $message }}</small>
@enderror
</div>
<button type=”submit” class=”btn btn-primary”>Enviar</button>
</form>
</div>
</div>
@endsection
Configurar rotas:No arquivo Routes/web.php , defina as rotas para exibir o formulário e lidar com uploads de arquivos:
php
Copiar código
use App\Http\Controllers\FileUploadController;
Route::get('upload', [FileUploadController::class, 'showForm'])->name('file.upload');
Route::post('upload', [FileUploadController::class, 'uploadFile'])->name('file.upload.post');
5. Lidando com a lógica de upload de arquivos
No FileUploadController.php , escreva a lógica para lidar com o processo de upload do arquivo:
Mostrar o formulário:
php
Copiar código
função pública mostrarForm() {
retornar visualização('carregar');
}
Lidar com uploads de arquivos:
No mesmo controlador, adicione o seguinte método para lidar com uploads de arquivos:
php
Copiar código
função pública uploadArquivo(Solicitação $solicitação) {
// Valida o arquivo enviado
$request->validar([
'arquivo' => 'obrigatório|arquivo|mimes:jpeg,png,pdf,docx|max:2048',
]);
// Armazena o arquivo
if ($request->arquivo('arquivo')) {
$nomeDoArquivo = tempo() . '_' . $request->arquivo->getClientOriginalName();
$filePath = $request->file('file')->storeAs('uploads', $fileName, 'public');
}
return back()->with('sucesso', 'Arquivo carregado com sucesso.');
}
Este método realiza a validação do arquivo, verifica se o arquivo está presente e o armazena usando o método storeAs .
6. Validando uploads de arquivos
A validação é fundamental para garantir que os usuários carreguem apenas os tipos e tamanhos de arquivos permitidos. O método de validação do Laravel simplifica esse processo. As regras de validação usadas aqui são:
- necessário : garante que o arquivo seja carregado.
- arquivo : garante que o item carregado seja um arquivo.
- mimes : especifica os tipos de arquivos permitidos (por exemplo, jpeg, png, pdf, docx).
- max : especifica o tamanho máximo do arquivo em quilobytes (por exemplo, 2.048 KB = 2 MB).
Você pode personalizar essas regras para atender aos requisitos do seu aplicativo.
7. Armazenamento de arquivos
A fachada de armazenamento do Laravel permite armazenar arquivos facilmente. No exemplo acima, usamos o método storeAs para armazenar o arquivo no diretório public/uploads . Para tornar a pasta pública/uploads acessível, você precisa vincular o diretório de armazenamento à pasta pública. Execute o seguinte comando:
festa
Copiar código
armazenamento artesanal em php: link
Este comando cria um link simbólico de storage/app/public para public/storage .
8. Exibindo arquivos carregados
Para exibir os arquivos carregados, recupere-os da pasta de armazenamento e gere uma URL usando a fachada Storage . Veja como você pode exibir imagens ou arquivos:
No Controlador:
php
Copiar código
função pública mostrarUploads() {
$arquivos = Armazenamento::disk('public')->arquivos('uploads');
return view('uploads', compact('arquivos'));
}
- Na visualização:
Crie um arquivo resources/views/uploads.blade.php :
HTML
Copiar código
@extends('layouts.layout')
@seção('conteúdo')
<h3>Arquivos enviados:</h3>
<ul>
@foreach($arquivos como $arquivo)
<li><a href=”{{asset('storage/' . $file) }}”>{{ basename($file) }}</a></li>
@endforeach
</ul>
@endsection
- Isso irá gerar uma lista de arquivos carregados com links para download.
9. Protegendo uploads de arquivos
Os uploads de arquivos podem representar riscos de segurança se não forem tratados adequadamente. Aqui estão algumas práticas recomendadas para proteger uploads de arquivos:
- Limitar tipos de arquivo permitidos: sempre valide o tipo de arquivo usando a regra mimes .
- Limitar tamanho do arquivo: restrinja o tamanho dos arquivos para evitar o consumo excessivo de recursos do servidor.
- Use a nomenclatura adequada de arquivos: armazene arquivos usando nomes exclusivos para evitar a substituição de arquivos existentes.
- Verificar arquivos: considere usar antivírus ou ferramentas de verificação de arquivos para detectar uploads maliciosos.
- Restringir o acesso público: evite armazenar arquivos confidenciais em diretórios acessíveis ao público. Você pode usar o diretório de armazenamento do Laravel para arquivos privados e criar um controlador para servi-los com segurança.
10. Conclusão
Os uploads de arquivos são um recurso vital para muitas aplicações web, e o Laravel simplifica o processo com suas ferramentas e funcionalidades integradas. Neste tutorial, cobrimos os conceitos básicos de configuração de uploads de arquivos, validação e armazenamento de arquivos, exibição deles e proteção do processo de upload. Com essa base, você pode personalizar e ampliar a funcionalidade de upload de arquivos para atender às necessidades do seu projeto.