【问题标题】:vcard export download in Codeigniter works only onceCodeigniter 中的 vcard 导出下载只能使用一次
【发布时间】:2015-10-28 11:46:20
【问题描述】:

我希望我的用户选择多个联系人并以 vcard 格式导出他们的详细信息。这是我的控制器:

function get_contacts_email_vcard()
            {
                $this->load->library('vcard');                
                $datavcard = $this->getvcard($this->user_model->get_email_contacts());
            } 

            function getvcard($dat)
            {
                $datavcarddata = array();
                foreach($dat as $data){
                $datavcarddata['display_name'] = $data->name;                                                 
                $datavcarddata['cell_tel'] = $data->mobile_no;                
                $datavcarddata['email1'] = $data->email;   
                if (is_array($datavcarddata))
                {    
                    $this->vcard->vcard($datavcarddata);
                }
                else
                {
                    $this->vcard->vcard();
                }
                $this->vcard->zipdownload();
                }
                return $datavcarddata;
            } 

这是我的看法:

<li><a href="<?php echo base_url(); ?>auth/get_contacts_email_vcard">vCard(Address Book)</a></li>

这是我的模型:

$this->db->select('*');
            $this->db->from('contacts');
            $this->db->where('user_id', $this->session->userdata('user_id'));
            $this->db->order_by('date_created', 'DESC');
            $query = $this->db->get();
            $result = $query->result();
            return $result;

我面临的问题是这只能工作一次。只有我数据库中最后一个联系人的数据会下载到一个 zip 文件中。我想为不同的联系人创建不同的 zip 文件或 vcf 文件。我还想创建一个包含所有 vcf 文件的单个 zip 文件。

【问题讨论】:

  • 我不知道 vcard 库是如何工作的,但如果看起来它是罪魁祸首。它是否有任何方法可以返回 vcard 数据,以便您可以将其放入数组中并将所有卡片压缩在一起?
  • 感谢您的回复。我不知道。我尝试创建一个数组并对其进行压缩,但没有成功。
  • 任何可以解决我的问题的人 :-(

标签: php codeigniter vcf-vcard


【解决方案1】:

好的,经过大量研究,我发现单击事件(或任何其他事件)只能向浏览器发送一个下载请求。所以不可能下载多个vcards

【讨论】:

    【解决方案2】:
    $this->db->select('*');
    $this->db->from('tblname');
    $info = $this->db->get()->result();
    $userContacts = new stdClass();
    $userContacts->data = $info;
    
    $dataArray = '';
    
    foreach($userContacts as $contact)
    {
    
          for($i=0; $i<sizeof($contact);$i++)
          {
    
    
            $first_name = $contact[$i]->name;
    
            $last_name = '';
    
            $mobile_number = $contact[$i]->mobile;
    
            $email_address= '';
    
            $dataArray .="BEGIN:VCARD\nN:$first_name;$last_name\nFN:$first_name\nTEL;TYPE=WORK,MSG:$mobile_number\nEMAIL;TYPE=INTERNET:$email_address\nEND:VCARD\n";
    
          }
    
        }
    
    
       $data = $dataArray;
    
       $size = strlen($data);
    
       $filename = "Restaurants.vcf";
    
       header("Content-Type: application/octet-stream");
    
       header("Content-Length: $size");
    
       header("Content-Disposition: attachment; filename=\"$filename\"");
    
       header("Content-Transfer-Encoding: binary");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 2015-04-19
      • 2020-04-04
      相关资源
      最近更新 更多