定制 elzobrito/olivia-force-download 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

elzobrito/olivia-force-download

Composer 安装命令:

composer require elzobrito/olivia-force-download

包简介

Componente leve para download e exibição inline de arquivos com suporte a streaming e Range Requests

README 文档

README

Componente PHP leve para download e exibição inline de arquivos com suporte a streaming em chunks e Range Requests (download resumível).

Requisitos

  • PHP 7.1 ou superior
  • Extensão fileinfo habilitada

Instalação

composer require elzobrito/olivia-force-download

Uso

Download forçado

Força o navegador a baixar o arquivo em vez de exibi-lo.

use OliviaDownload\Download;

$download = new Download();

// Usa o nome original do arquivo
$download->now('/caminho/para/relatorio.pdf');

// Define um nome personalizado (extensão preservada automaticamente)
$download->now('/caminho/para/relatorio.pdf', 'relatorio-janeiro');
// Resultado: relatorio-janeiro.pdf

// Nome personalizado com extensão explícita
$download->now('/caminho/para/dados.csv', 'exportacao.xlsx');
// Resultado: exportacao.xlsx

Exibição inline

Exibe o arquivo diretamente no navegador. Útil para PDFs, imagens e outros formatos que o navegador consegue renderizar.

$download->inline('/caminho/para/contrato.pdf');

Funcionalidades

Streaming em chunks

Arquivos são transmitidos em blocos de 8 KB, evitando estouro de memória mesmo com arquivos de centenas de megabytes.

Download resumível (Range Requests)

Suporta o header HTTP Range, respondendo com 206 Partial Content. Gerenciadores de download e navegadores aproveitam isso automaticamente para retomar transferências interrompidas.

Detecção automática de MIME

O tipo MIME é detectado a partir do conteúdo real do arquivo via mime_content_type(), sem depender da extensão.

Tratamento de erros

Situação Código HTTP Exceção
Arquivo não encontrado 404 RuntimeException
Sem permissão 403 RuntimeException
Falha ao abrir RuntimeException

Headers enviados

Content-Type: {mime detectado}
Content-Disposition: attachment|inline; filename="..."; filename*=UTF-8''...
Content-Length: {tamanho em bytes}
Content-Transfer-Encoding: binary
Accept-Ranges: bytes
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Expires: 0

Exemplo com OliviaHorus

use OliviaDownload\Download;

class RelatorioController
{
    public function exportar(): void
    {
        $arquivo = __DIR__ . '/../storage/relatorios/vendas-q1.pdf';

        $download = new Download();
        $download->now($arquivo, 'vendas-primeiro-trimestre');
    }

    public function visualizar(): void
    {
        $arquivo = __DIR__ . '/../storage/relatorios/vendas-q1.pdf';

        $download = new Download();
        $download->inline($arquivo);
    }
}

Licença

MIT

统计信息

  • 总下载量: 182
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-04-16

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固