2014-09-18 3 views
0

Мне нужно добавить кнопку в свой файл просмотра, которая позволяет пользователю загружать файл с передней стороны веб-сайта. Все работает отлично: отображение данных, однако я не уверен, как предложить загружаемый файл на основе данных в переменной.Как загрузить файл из представления при нажатии кнопки?

Вот данные, которые генерируются в файле вида.

<?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 
'; 
?> 

мне нужно каким-то образом использовать CodeIgniter force_download() по щелчку якоря из файла вида. Я попытался добавить <?php echo site_url('controller/function'); ?> к тегу привязки, но это просто направляет меня на страницу на сайте http://example.com/controller/function, и я предполагаю, что это потому, что она вызывается из передней части.

Есть ли способ достичь этого?

Дальнейшие примечания: Мой контроллер выбирает все данные из базы данных и передает их на мой адрес address_book. В адресе address_book у меня есть следующее:

<?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

Вы рассмотрели ее обработки на уровне сервера, а не в приложении? Ваш веб-сервер может/должен быть настроен для возврата .vcf в виде вложений. Связано: http://stackoverflow.com/questions/5116772/vcard-vcf-file-download-browser-support-godaddy Или EE перезаписывает эти заголовки? – AllInOne

ответ

1

Рассматривали ли вы обработку этого на уровне сервера, а не в приложении? Ваш веб-сервер может/должен быть настроен для возврата .vcf в виде вложений. Связано: stackoverflow.com/questions/5116772/...

Возможно, EE перезаписывает те заголовки tho? Если это так, вот свободное расширение EE, что позволяет расширять типы шаблонов (каждый из которых может иметь свой собственный тип MIME):

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

Вы можете легко изменить это расширение, чтобы включить загрузку обработки вам требуется.

Я думаю, что вы хотите: application/octet-stream для .vcf

Смежные вопросы