Présentation
Le code retour CopixActionReturn::FILE sert à demander à Copix de télécharger un contenu qui existe sous la forme d'un fichier sur le serveur vers le poste client.
Ce code est pratique lorsque le contenu est disponible sur le serveur et que vous souhaitez utiliser Copix pour le fournir (par exemple pour contrôler si l'utilisateur à le droit de visualiser ce dernier).
Exemple :
return _arFile ('/tmp/monfichier.zip');
//ou avec la syntaxe complète
return new CopixActionReturn (CopixActionReturn::FILE, '/tmp/monfichier.zip');
Options supplémentaires
Il est possible de spécifier des options supplémentaires lorsque l'on demande le téléchargement de contenu, soit :
- la disposition du fichier (content-disposition)
- le nom du fichier (filename) (déterminé automatiquement à partir du chemin du fichier si non spécifié)
- le type mime du contenu (content-type, option par défaut) (déterminé automatiquement à partir du nom du fichier si non spécifié)
- le mode de transfert du fichier (content-transfer-encoding)
Les options sont passées sous la forme d'un tableau associatif.
Disposition du fichier
Cette option peut prendre deux valeurs :
- inline (valeur par défaut si vous ne spécifiez rien)
- attachement
Exemple :
return _arFile ('/tmp/monfichier.zip', array ('content-disposition'=>'attachement'));
//et avec inline
return _arFile ('/tmp/monfichier.zip', array ('content-disposition'=>'inline'));
Spécifier un nom de fichier
Cette option permet d'indiquer au navigateur le nom du fichier à télécharger. Cela évite que le fichier prenne le nom du script php qui génère le contenu.
Exemple :
return _arFile ('/tmp/monfichier.zip', array ('filename'=>'archive.zip'));
Spécifier le type MIME du fichier
Cette option permet d'indiquer le type du contenu que nous sommes en train d'envoyer au navigateur.
Si rien n'est spécifié et qu'aucun nom de fichier (filename) n'a été spécifié, le type sera déterminé à partir du chemin du fichier sur le serveur. Si rien n'est spécifié et qu'un nom de fichier à été donné, le type sera déterminé en fonction de l'extension du nom de fichier demandé. Sinon, le type sera celui spécifié.
Exemples :
//Le type MIME sera celui du zip car le chemin du fichier indique "monfichier.zip"
return _arFile ('/tmp/monfichier.zip');
//Le type MIME sera celui de tar.gz car on a spécifié un nom de fichier avec tar.gz
return _arFile ('/tmp/monfichier.zip', array ('filename'=>'archive.tar.gz'));
//le type MIME sera celui du "gz"" car on le spécifie explicitement
return _arFile ('/tmp/archive.zip', array ('content-type'=>CopixMIMEType::getFromExtension ('.gz'))));
Note Ici, on utilise CopixMIMETypes pour récupérer le type MIME du fichier. CopixMIMETypes prend en charge la plupart des formats connus.
Note Le type du fichier est la seule option qui n'a pas besoin d'être passée sous la forme de tableau, ainsi vous pouvez écrire :
return _arFile ('/tmp/monfichier.zip', CopixMIMEType::getFromExtension ('.zip')));
Mode de transfert
Cette option permet de spécifier au navigateur comment transférer le contenu que l'on lui envoie.
Par défaut, Copix utilise "binary".
Exemple:
return _arFile ('/tmp/monfichier.zip', array ('content-transfer-encoding'=>'binary')));
