Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

741
Views
LARAVEL - Visualización de imágenes de la carpeta de almacenamiento

Soy nuevo en Laravel y me preguntaba si alguien me puede ayudar con una simple carga de imágenes.

Tengo un formulario que le permite a un usuario crear un perfil y cargar un avatar para su perfil durante el proceso. Todo esto funciona perfectamente. Aquí está el código de mi controlador:

 if (request()->hasFile('avatar')) { $file = request()->file('avatar'); $file->storeAs('avatars/' . auth()->id(), 'avatar.jpg'); }

La imagen se guarda en storage/app/avatars/USER-ID/avatar.jpg

No estoy seguro de cómo mostrar la imagen de esta carpeta. He buscado soluciones, pero no puedo usar php artisan storage:link porque no es mi servidor. ¿Cómo hago esto sin usar el enlace de almacenamiento? ¿Puedo crear un enlace manualmente?

Si alguien pudiera explicarme una solución, ¡sería perfecto!

Solo pregunte si necesita fragmentos de código.

¡Gracias!

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Deberá acceder a los archivos protegidos mediante una ruta de los enchufes a un controlador que pueda acceder a los archivos y pasarlos a la vista.

También recomendaría usar la intervention/image del paquete, puede ser instalado por

composer require intervention/image

Vea a continuación para acceder a la imagen:

// Tu ruta en web.php

 // Public route to show user avatar Route::get('avatars/{id}/{image}', [ 'uses' => 'TheNameOfYourController@userProfileAvatar' ]);

// En su archivo de controlador. En este ejemplo según el nombre de lo que tenemos arriba sería userProfileAvatar()

 namespace App\Http\Controllers; use Illuminate\Http\Request; use Image; class TheNameOfYourController extends Controller { /** * Show user avatar * * @param $id * @param $image * @return string */ public function userProfileAvatar($id, $image) { return Image::make(storage_path() . '/avatars/' . $id . '/' . $image)->response(); } }

// La vista de su hoja para mostrar la imagen

 <img src="images/profile/{{ \Auth::user()->id }}/avatar.jpg" alt="{{ \Auth::user()->name }}">

Aquí hay algunas referencias, pero estas instancias van un paso más allá y guardan la ruta del archivo en la base de datos al cargar:

// Ejemplo de ruta

  • https://github.com/jeremykenedy/laravel-auth/blob/master/routes/web.php

// Ejemplo de controlador

  • https://github.com/jeremykenedy/laravel-auth/blob/master/app/Http/Controllers/ProfilesController.php

// Ver ejemplos

  • https://github.com/jeremykenedy/laravel-auth/blob/master/resources/views/profiles/show.blade.php

  • https://github.com/jeremykenedy/laravel-auth/blob/master/resources/views/profiles/edit.blade.php

  • https://github.com/jeremykenedy/laravel-auth/blob/master/resources/views/partials/nav.blade.php

about 4 years ago · Santiago Trujillo Report

0

Bueno, si no tiene acceso al servidor para crear un enlace simbólico, debe crear una ruta que devuelva la imagen como respuesta.

Algo como eso:

 Route::get('storage/{filename}', function ($filename) { $path = storage_path('avatars/' . $filename); if (!File::exists($path)) { abort(404); } $file = File::get($path); $type = File::mimeType($path); $response = Response::make($file, 200); $response->header("Content-Type", $type); return $response; });
about 4 years ago · Santiago Trujillo Report

0

Cree un enlace simbólico que conectará los directorios de storage/app y public/img , por ejemplo:

 ln -s /home/laravel/public/img /home/laravel/storage/app

Luego, solo use el asistente de asset() para generar un enlace:

 <img src="{{ asset('img/avatars/'.auth()->id().'/avatar.jpg') }}">
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!