2014-09-18 2 views
0

J'ai besoin d'ajouter un bouton dans mon fichier de vue qui permet à un utilisateur de télécharger un fichier à partir de la partie frontale du site. Tout fonctionne bien: affichage des données mais je ne suis pas sûr de savoir comment offrir un fichier téléchargeable basé sur les données d'une variable.Comment télécharger un fichier depuis la vue sur le bouton cliquer?

Voici les données générées à partir du fichier de vue.

<?php 
$vCardData[$i] = ' 
BEGIN:VCARD 
VERSION:4.0 
N:'.${'data'.$i}['l_name'].';'.${'data'.$i}['f_name'].';;; 
FN:'.${'data'.$i}['title'].' '.${'data'.$i}['f_name'].' '.${'data'.$i}['l_name'].' 
ORG:'.${'data'.$i}['company'].' 
TEL;TYPE=work,voice;VALUE=uri:tel:'.${'data'.$i}['company_contact_number'].' 
TEL;TYPE=home,voice;VALUE=uri:tel:'.${'data'.$i}['number'].' 
ADR;TYPE=work;LABEL="'.${'data'.$i}['address_1'].' '.${'data'.$i}['address_2'].'\n'.${'data'.$i}['city'].', '.${'data'.$i}['county'].' '.${'data'.$i}['post_code'].'\n'.${'data'.$i}['county'].'" 
:;;'.${'data'.$i}['address_1'].' '.${'data'.$i}['address_2'].';'.${'data'.$i}['city'].';'.${'data'.$i}['county'].';'.${'data'.$i}['post_code'].';'.${'data'.$i}['county'].' 
EMAIL:'.${'data'.$i}['email'].' 
REV:'.time().' 
END:VCARD 
'; 
?> 

-je utiliser en quelque sorte le CodeIgniter force_download() sur clic d'un point d'ancrage à partir du fichier de vue. J'ai essayé d'ajouter <?php echo site_url('controller/function'); ?> à l'étiquette d'ancre cependant ceci me dirige juste à une page sur le site http://example.com/controller/function et je suppose que c'est parce que c'est appelé du début.

Y a-t-il un moyen d'y parvenir? Notes supplémentaires: Mon contrôleur sélectionne toutes les données de la base de données et les transmet à ma vue address_book. Dans la vue address_book, j'ai ce qui suit:

<?php for ($i = 0; $i < $count; $i++) { ?> 
    <div class="col-sm-6 contact_card"> 
     <h4><?php echo ${'data'.$i}['title']; echo ${'data'.$i}['f_name']; echo ${'data'.$i}['l_name']; ?></h4> 
     <?php if (${'data'.$i}['email']) { echo 'e: <a href="mailto:'.${'data'.$i}['email'].'">'.${'data'.$i}['email'].'</a>'; } 
     if (${'data'.$i}['number']) { echo '<p>t: '.${'data'.$i}['number'].'</p>'; } 

     $vCardData[$i] = ' 
     BEGIN:VCARD 
     VERSION:4.0 
     N:'.${'data'.$i}['l_name'].';'.${'data'.$i}['f_name'].';;; 
     FN:'.${'data'.$i}['title'].' '.${'data'.$i}['f_name'].' '.${'data'.$i}['l_name'].' 
     ORG:'.${'data'.$i}['company'].' 
     TEL;TYPE=work,voice;VALUE=uri:tel:'.${'data'.$i}['company_contact_number'].' 
     TEL;TYPE=home,voice;VALUE=uri:tel:'.${'data'.$i}['number'].' 
     ADR;TYPE=work;LABEL="'.${'data'.$i}['address_1'].' '.${'data'.$i}['address_2'].'\n'.${'data'.$i}['city'].', '.${'data'.$i}['county'].' '.${'data'.$i}['post_code'].'\n'.${'data'.$i}['county'].'" 
     :;;'.${'data'.$i}['address_1'].' '.${'data'.$i}['address_2'].';'.${'data'.$i}['city'].';'.${'data'.$i}['county'].';'.${'data'.$i}['post_code'].';'.${'data'.$i}['county'].' 
     EMAIL:'.${'data'.$i}['email'].' 
     REV:'.time().' 
     END:VCARD 
     ';?> 

     <a href="<?php echo site_url('address_book/vcard') ?>">Download vCard</a> 

    </div> 
<?php } 
+0

Avez-vous envisagé la manipulation de ce au niveau du serveur plutôt que dans l'application? Votre serveur web pourrait/devrait être configuré pour renvoyer .vcf en pièce jointe. En relation: http://stackoverflow.com/questions/5116772/vcard-vcf-file-download-browser-support-godaddy Ou EE écrase-t-il ces en-têtes? – AllInOne

Répondre

1

Avez-vous envisagé de gérer cela au niveau du serveur plutôt que dans l'application? Votre serveur web pourrait/devrait être configuré pour renvoyer .vcf en pièce jointe. Connexes: stackoverflow.com/questions/5116772/...

Peut-être que EE écrase ces en-têtes? Si oui est ici une extension EE gratuit qui vous permet d'étendre les types de modèles (dont chacun peut avoir leur propre type mime):

http://devot-ee.com/add-ons/template-image-mime-type

Vous pouvez facilement modifier cette extension pour inclure le téléchargement de manutention dont vous avez besoin.

Je pense que vous voulez: application/octet-stream pour .vcf

Questions connexes