使用 Laravel 的 HTTP "sink" 方法轻松下载文件
需要下载带有 HTTP 请求的文件吗?Laravel 的 sink
方法提供了一种简洁的方法,可以用最少的代码将 HTTP 响应直接保存到文件中。
基础用法
将 HTTP responses 直接保存到文件:
Http::sink(storage_path('download.zip'))
->get('https://example.com/example-file.zip');
真实示例
以下是如何在下载管理器中使用它:
class DownloadManager
{
public function downloadFile(string $url, string $filename)
{
return Http::sink(storage_path("downloads/{$filename}"))
->withHeaders([
'User-Agent' => 'MyApp/1.0',
'Accept' => '*/*'
])
->get($url);
}
public function downloadBackup(string $backupUrl, string $apiKey)
{
$timestamp = now()->format('Y-m-d-His');
return Http::sink(storage_path("backups/backup-{$timestamp}.zip"))
->withToken($apiKey)
->get($backupUrl);
}
public function downloadReportAsCsv(string $reportUrl)
{
return Http::sink(
storage_path('reports/latest.csv'),
withHeaders([
'Accept' => 'text/csv'
])
)->get($reportUrl);
}
}
sink
方法通过为你处理文件写入过程简化了文件下载。