Как скачать файл из вида по нажатию кнопки?

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

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

<?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 у меня есть следующее:

<?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 в качестве вложений. Похожие страницы: stackoverflow.com/questions/5116772/…

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

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

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]