簡體   English   中英

如何從單擊按鈕的視圖中下載文件?

[英]How to download a file from the view on button click?

我需要在查看文件中添加一個按鈕,該按鈕允許用戶從網站的前端下載文件。 重新:一切正常:顯示數據,但是我不確定如何根據變量中的數據提供可下載文件。

這是從視圖文件生成的數據。

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

您是否考慮過在服務器級別而不是在應用程序級別處理此問題? 您的網絡服務器可以/應該配置為返回.vcf作為附件。 相關:stackoverflow.com/questions/5116772/…

也許EE會覆蓋這些標頭嗎? 如果是這樣,那么這里有一個免費的EE擴展,可讓您擴展模板類型(每種模板都可以具有自己的mime類型):

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

您可以輕松修改此擴展名,以包括所需的下載處理。

我認為您想要:.vcf的application/octet-stream

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM