Descarga archivos fácilmente con el método HTTP sink de Laravel
- Publicado el 06 febrero, 2025
- Palabras: 241
¿Necesita descargar archivos con solicitudes HTTP? El método sink ofrece una forma sencilla de guardar las respuestas HTTP directamente en archivos con un código mínimo.

#Uso básico
Al descargar archivos en aplicaciones Laravel, a menudo es necesario gestionar el proceso de escritura de archivos, administrar la memoria de manera eficiente y lidiar con descargas de archivos grandes. El método sink simplifica todo esto al proporcionar una canalización directa desde las respuestas HTTP hasta el almacenamiento, manejando el proceso de escritura de archivos automáticamente.
Veamos lo sencillo que es usarlo:
Http::sink(storage_path('download.zip'))
->get('https://example.com/example-file.zip');
#Ejemplo práctico
A continuación te indicamos cómo puedes usarlo en un administrador de descargas:
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);
}
}
El método sink simplifica las descargas de archivos al manejar el proceso de escritura de archivos por tí. Esto significa que no necesitas administrar manualmente los flujos de archivos ni preocuparse por el uso de la memoria con archivos grandes, ya que el contenido se escribe directamente en el disco.
Piense en ello como una tubería directa desde la respuesta HTTP a su almacenamiento: Laravel administra las complejidades del manejo de archivos mientras tu te concentras en crear tu aplicación. Esto es especialmente útil cuando:
- Descarga archivos grandes que no deberían cargarse completamente en la memoria
- Manejo de descargas de archivos en trabajos en segundo plano
- Implementación de sistemas de respaldo automáticos
- Creación de mecanismos de almacenamiento en caché de archivos
Por ejemplo, si está descargando un archivo de 1 GB, el método sink garantiza que se escriba directamente en el disco en lugar de cargarse primero en la memoria de su aplicación. Esto lo hace perfecto para manejar archivos grandes en entornos de producción donde las limitaciones de memoria son importantes.
Fuente: Harris Raftopoulos
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión