Une des fonctionnalités qui à coup sûr vous êtes confronté ou serait confronté un jour ,c’est le fameux envoi de fichier et gestion des fichiers media quelques soient leurs types et tailles.

  • Comment et ou je les stocke
  • Comment je fais le lien entre le fichier et mon application Laravel : URL temporaire , fixe..
  • Comment je gère la sécurité et les droits d’accès
  • Quels types de droits puis je donner pour accéder à la ressource : public ou privé
  • La performance le download et upload sont consommateurs de ressources : stream gzip pour optimiser la compression.
  • Les interconnexions possibles en plus de stocker localement sur votre serveur de pouvoir stocker sur du Cloud, ou du FTP..
  • Comment proprement j’intègre mon Model Laravel de mon app avec ma gestion de fichiers et de tous les cas cités ci dessus

Pour cela j’ai trouvé un package qui vraiment est le must :

https://github.com/spatie/laravel-medialibrary

Une documentation très bien faites et une simplicité d’utilisation!

https://docs.spatie.be/laravel-medialibrary/v7/introduction/

La classe de base est hasMedia , il suffit de faire hériter votre propre model de cette classe

class PrivateDocument extends Model implements HasMedia{

	protected $table = 'privatedocument';
	
	use HasMediaTrait;
	
	public $timestamps = true;
	
	protected $fillable = array('name','userid','note','created_at','updated_at');
	
	public function assignedUser()
	{
		return $this->belongsTo('Groovel\Cmsgroovel\models\User','userid','id');
	}
	
	
	
	public function hasSharePrivateDocuments(){
	    return $this->hasMany('Test\Easyged\models\SharePrivateDocument','privatedocid','id');
	}
}

Pour y accéder rien de plus simple :

                $document=PrivateDocument::find(id);//id du fichier
    		ici je stocke tous mes fichiers dans une collection appelé private vous pouvez nommer vos collections    		
    		$media = $document->getFirstMedia('private');//pour accéder au fichier
    		$url = $document->getFirstMediaUrl('private');//retourne l'url vers la ressource fichier

Le package va générer une nouvelle table en base : media

qui va maintenir le lien logique entre votre class model Laravel et votre fichier et tout cela de manière transparente

L’API est très facile à utiliser, il est facilement possible de customiser les URL , de resizer les images, et de faire des contrôles de tailles et de type de fichiers stockés.

Cette librairie est très performante, vous pouvez streamer vos fichiers Référez vous à la documentation! et merci au développeur de ce package , beau boulot!

Vos commentaires

Laisser un commentaire