编程

Laravel 生成文件临时分享链接

8 2025-08-20 15:54:00

Laravel ShareLink 包可以帮助你创建、管理和保护文件、路由和模型的临时共享链接。该软件包允许使用自定义过期和最大点击量进行简单共享,并提供用于管理共享的 API,例如延长现有共享的时间。以下是软件包文档中的一个基本示例:

use Grazulex\ShareLink\Facades\ShareLink;
 
// Share a file with expiration
$link = ShareLink::create('/path/to/document.pdf')
    ->expiresIn(60) // 60 minutes
    ->maxClicks(5)
    ->withPassword('secret123')
    ->generate();
 
echo $link->url; // https://yourapp.com/share/abc123xyz

该包有很多高级特性,比如分享路由,Eloquent 模型,甚至可以为共享链接指定 IP 限制:

$link = ShareLink::create('/secure/document.pdf')
    ->expiresIn(60)
    ->burnAfterReading() // Self-destructs after first access
    ->metadata([
        'allowed_ips' => ['192.168.1.0/24', '10.0.0.1'],
        'denied_ips' => ['192.168.1.100']
    ])
    ->generate();

该包也提供生成共享链接的 CLI 命令,你可以从命令行生成链接:

$ php artisan sharelink:list --active
$ php artisan sharelink:create /reports/quarterly.pdf \
    --expires=72 \
    --max-clicks=10 \
    --password=Q4Report2024

主要特性

  • 多种资源类型 - 无缝分享文件、路由和模型预览
  • 访问时间限制 - 设置到期时间及使用次数
  • 密码保护 -  可选密码防护提供安全性
  • 限流 - token 限流,防止滥用
  • IP 过滤 - 允许/禁用指定 IP 地址或者 CIDR 范围
  • 签名 URL - 可选 Larave 签名路由集成
  • 阅后即焚 - 一次性访问链接,阅后自销毁
  • 全面的审计 - 跟踪访问模式、IP 和时间戳
  • 高级安全 - 密码限制、暴力保护
  • 灵活的交付 - 支持 X-Sendfile、X-Accel-Redirect 和流媒体
  • 管理 API - 以编程方式撤销和扩展链接
  • CLI 命令 - 完全的 Artisan 命令支持
  • 可观察性 - 内置日志记录和指标集成
  • 测试友好 - 全面的测试覆盖率,易于模拟

💻 在 GitHub 上查看:Grazulex/laravel-sharelink

 

下一篇