Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从单击“查看”按钮下载文件?_Php_Codeigniter_Expressionengine_Vcf Vcard - Fatal编程技术网

Php 如何从单击“查看”按钮下载文件?

Php 如何从单击“查看”按钮下载文件?,php,codeigniter,expressionengine,vcf-vcard,Php,Codeigniter,Expressionengine,Vcf Vcard,我需要在我的视图文件中添加一个按钮,允许用户从网站前端下载文件。一切都很好:显示数据,但我不知道如何根据变量中的数据提供可下载的文件 下面是从视图文件生成的数据 <?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'].' '.

我需要在我的视图文件中添加一个按钮,允许用户从网站前端下载文件。一切都很好:显示数据,但我不知道如何根据变量中的数据提供可下载的文件

下面是从视图文件生成的数据

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

您是否考虑过在服务器级别而不是在应用程序中处理此问题?您的Web服务器可以/应该配置为将.vcf作为附件返回。相关信息:stackoverflow.com/questions/5116772/

也许EE会覆盖那些标题tho?如果是这样,这里有一个免费的EE扩展,允许您扩展模板类型(每个模板都可以有自己的mime类型):

您可以轻松地修改此扩展以包含所需的下载处理


我想您需要:
应用程序/octet流
for.vcf

您是否考虑过在服务器级别而不是在应用程序中处理此问题?您的Web服务器可以/应该配置为将.vcf作为附件返回。相关:或者EE是否覆盖这些标题?
<?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 }