Bonjour,
j'esper vous vous portez bien
Voila j'ai un soucis avec le téléchargement des fichiers sous cake 2.7.1
j'ai des fichiers dans un repertoire et j'aimerai qu'un utilisateur puisse les téléchargés à partir d'un lien voila ce que je fais jusqu'ici après quelques recherche
Voila je rencontre un petit problème avec mon code.
Décrivez ici votre code ou ce que vous cherchez à faire
dans mon controller je fais ceci
public function membre_sendFile($id) {
$file = $this->Campagne->getFile($id);
$this->response->file($file[IMAGES . 'Campagne' . DS . $id]);
//Retourne un objet reponse pour éviter que le controller n'essaie de
// rendre la vue
return $this->response;
}
et dans ma vue je fais ceci
<?php echo $this->Html->link(' Télécharger',array('membre' =>true,'action' => 'sendFile' ,$campagne['Campagne']['mediaplanning'],'full_base' => true),array('class'=> 'btn btn-sucess btn-xs ','title'=>'Détails')); ?>
je veux que lorsque l'on fait un click sur le lien télécharger, que le fichier apparait en téléchargement
error database
Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'getFile' at line 1
mes fichier se trouvent dans le repertoire img/monrepertoire
quelqu'un a une idée? SVP
Merci lartak, tu vas me trouvé top con la methode je ne l'ai pas j'ai cru que c'était une methode du framework, tu peut me proposé autre choses? qui fonctionne avec la version 2.7.1 de cake?
Si ta requête SQL est faite pour récupérer l'enregistrement correspondant à la valeur de la variable $id
, tu peux tout simplement par exemple utiliser la méthode findById
ou alors tu fais un find('first')
en passant en paramêtre la condition pour l'id.
Autre chose, il est inutile de définir un lien absolu dans la méthode link
du Helper Html
et si tu veux forcer le téléchargement, il te suffit de définir le paramêtre download
à true
dans la méthode file
:
Si vous voulez, vous pouvez aussi forcer un fichier à être téléchargé au lieu d’être affiché dans le navigateur en spécifiant les options:
$this->response->file(
$file['path'],
array('download' => true, 'name' => 'foo')
);
Source : Les Objets Request et Response » Envoyer des fichiers.
Au passage, pour rappel la constante IMAGES
est obsolète depuis la version 2.4
.