Saltar al contenido

Descargar archivos en laravel usando Response::download

Contamos con el resultado a esta duda, al menos eso deseamos. Si continuas con alguna duda coméntalo, para nosotros será un placer ayudarte

Solución:

Prueba esto.

public function getDownload()

    //PDF file is stored under project/public/download/info.pdf
    $file= public_path(). "/download/info.pdf";

    $headers = array(
              'Content-Type: application/pdf',
            );

    return Response::download($file, 'filename.pdf', $headers);

"./download/info.pdf"no funcionará ya que tienes que dar la ruta física completa.

Actualización 20/05/2016

Los usuarios de Laravel 5, 5.1, 5.2 o 5.* pueden usar el siguiente método en lugar de Response fachada. Sin embargo, mi respuesta anterior funcionará tanto para Laravel 4 o 5. (el $header array cambio de estructura a asociativo array =>– los dos puntos después de que se eliminó ‘Content-Type’ – si no hacemos esos cambios, los encabezados se agregarán de manera incorrecta: el nombre del encabezado será un número que comienza desde 0,1,…)

$headers = [
              'Content-Type' => 'application/pdf',
           ];

return response()->download($file, 'filename.pdf', $headers);

Las descargas de archivos son súper sencillas en Laravel 5.

Como mencionó @Ashwani, Laravel 5 permite la descarga de archivos con response()->download() para devolver el archivo para su descarga. Ya no necesitamos meternos con ningún encabezado. Para devolver un archivo simplemente:

return response()->download(public_path('file_path/from_public_dir.pdf'));

desde dentro del controlador.


Ruta/controlador de descarga reutilizable

Ahora hagamos una ruta y un controlador de descarga de archivos reutilizables para que podamos servir cualquier archivo en nuestro public/files directorio.

Crea el controlador:

php artisan make:controller --plain DownloadsController

Crea la ruta en app/Http/routes.php:

Route::get('/download/file', '[email protected]');

Hacer método de descarga en app/Http/Controllers/DownloadsController:

class DownloadsController extends Controller

  public function download($file_name) 
    $file_path = public_path('files/'.$file_name);
    return response()->download($file_path);
  

Ahora simplemente suelte algunos archivos en el public/files directorio y puede servirlos mediante un enlace a /download/filename.ext:

File Name // update to your own "filename.ext"

Si ingresó el paquete Html de Laravel Collective, puede usar la fachada Html:

!! Html::link('download/filename.ext', 'File Name') !!

En la respuesta aceptada, para Laravel 4 los encabezados array está construido incorrectamente. Usar:

$headers = array(
  'Content-Type' => 'application/pdf',
);

Eres capaz de añadir valor a nuestra información asistiendo con tu experiencia en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *