【问题标题】:How to Display uploaded files (PDF, DOC etc) as downloadable link in CodeIgniter如何在 CodeIgniter 中将上传的文件(PDF、DOC 等)显示为可下载链接
【发布时间】:2016-07-27 10:17:57
【问题描述】:

我对 CodeIgniter 比较陌生,但我可以掌握一两件事。 我目前面临一个问题,我希望管理员查看或下载用户注册时提交的上传文件(pdf 和 doc)。 一切正常,但我希望管理员下载文件而不仅仅是查看文件名。

这是我的控制器:

<?php

类 NominationController 扩展 CI_Controller {

public function __construct() {
    parent::__construct();
    $this->load->model('Nomination');
    $this->load->library('session');
    }
/*
function for manage Nomination.
return all Nominations.
created by your name
created at 25-07-16.
*/
public function manageNomination() { 

    $data["Nominations"] = $this->Nomination->getAll();
    $this->load->view('Nomination/manage-Nomination', $data);

}
/*
function for  add Nomination get
created by your name
created at 25-07-16.
*/
public function addNomination() {

    $this->load->view('Nomination/add-Nomination');

}
/*
function for add Nomination post
created by your name
created at 25-07-16.
*/


public function addNominationPost() {
                    $data['title'] = $this->input->post('title');
                            $data['first_name'] = $this->input->post('first_name');
                            $data['last_name'] = $this->input->post('last_name');
                            $data['email_id'] = $this->input->post('email_id');
                            $data['phone_no'] = $this->input->post('phone_no');
                            $data['company'] = $this->input->post('company');
                            $data['popularity'] = $this->input->post('popularity');
                            $data['nominee_type'] = $this->input->post('nominee_type');
                            $data['innovation_name'] = $this->input->post('innovation_name');
                            $data['organisation_type'] = $this->input->post('organisation_type');
                            $data['category'] = $this->input->post('category');
                            $data['date_of_innovation'] = $this->input->post('date_of_innovation');
                            $data['company_offices'] = $this->input->post('company_offices');
                            $data['need_addressed'] = $this->input->post('need_addressed');
                            $data['user_benefits'] = $this->input->post('user_benefits');
                            $data['uniqueness'] = $this->input->post('uniqueness');
                            if ($_FILES['supporting_documents']['name']) { 
        $data['supporting_documents'] = $this->doUpload('supporting_documents');
     } 
                    $this->Nomination->insert($data);
    $this->session->set_flashdata('success', 'Nomination added Successfully');
    redirect('success');
}
/*
function for edit Nomination get
returns  Nomination by id.
created by your name
created at 25-07-16.
*/
public function editNomination($Nomination_id) {
    $data['Nomination_id'] = $Nomination_id;
    $data['Nomination'] = $this->Nomination->getDataById($Nomination_id);
    $this->load->view('Nomination/edit-Nomination', $data);
}
/*
function for edit Nomination post
created by your name
created at 25-07-16.
*/
public function editNominationPost() {

    $Nomination_id = $this->input->post('Nomination_id');
    $Nomination = $this->Nomination->getDataById($Nomination_id);
                    $data['title'] = $this->input->post('title');
                    $data['first_name'] = $this->input->post('first_name');
                    $data['last_name'] = $this->input->post('last_name');
                    $data['email_id'] = $this->input->post('email_id');
                    $data['phone_no'] = $this->input->post('phone_no');
                    $data['company'] = $this->input->post('company');
                    $data['popularity'] = $this->input->post('popularity');
                    $data['nominee_type'] = $this->input->post('nominee_type');
                    $data['innovation_name'] = $this->input->post('innovation_name');
                    $data['organisation_type'] = $this->input->post('organisation_type');
                    $data['category'] = $this->input->post('category');
                    $data['date_of_innovation'] = $this->input->post('date_of_innovation');
                    $data['company_offices'] = $this->input->post('company_offices');
                    $data['need_addressed'] = $this->input->post('need_addressed');
                    $data['user_benefits'] = $this->input->post('user_benefits');
                    $data['uniqueness'] = $this->input->post('uniqueness');
                    if ($_FILES['supporting_documents']['name']) { 
        $data['supporting_documents'] = $this->doUpload('supporting_documents');
        unlink('./uploads/Nomination/'.$Nomination[0]->supporting_documents);
    } 
            $edit = $this->Nomination->update($Nomination_id,$data);
    if ($edit) {
        $this->session->set_flashdata('success', 'Nomination Updated');
        redirect('success');
    }
}
/*
function for view Nomination get
created by your name
created at 25-07-16.
*/
public function viewNomination($Nomination_id) {
    $data['Nomination_id'] = $Nomination_id;
    $data['Nomination'] = $this->Nomination->getDataById($Nomination_id);
    $this->load->view('Nomination/view-Nomination', $data);
}
/*
function for delete Nomination    created by your name
created at 25-07-16.
*/
public function deleteNomination($Nomination_id) {
    $delete = $this->Nomination->delete($Nomination_id);
    $this->session->set_flashdata('success', 'Nomination deleted');
    redirect('manage-Nomination');
}
/*
function for activation and deactivation of Nomination.
created by your name
created at 25-07-16.
*/
public function changeStatusNomination($Nomination_id) {
    $edit = $this->Nomination->changeStatus($Nomination_id);
    $this->session->set_flashdata('success', 'Nomination '.$edit.' Successfully');
    redirect('manage-Nomination');
}
    /*
function for upload files
return uploaded file name.
created by your name
created at 25-07-16.
*/
public function doUpload($file) {
    $config['upload_path'] = './uploads/Nomination';
    $config['allowed_types'] = '*';
    $this->load->library('upload', $config);
        if ( ! $this->upload->do_upload($file))
        {
          $error = array('error' => $this->upload->display_errors());
          $this->load->view('upload_form', $error);
        }
        else
        {
          $data = array('upload_data' => $this->upload->data());
          return $data['upload_data']['file_name'];
        }
    }

}

这是我的 View.php

<tr>
                    <td width='30%' class='label-view text-right'>
                    <?php echo SiteHelpers::activeLang('Uniqueness', (isset($fields['uniqueness']['language'])? $fields['uniqueness']['language'] : array())) ;?>
                    </td>
                    <td><?php echo $row['uniqueness'] ;?> </td>

                </tr>

                <tr>
                    <td width='30%' class='label-view text-right'>
                    <?php echo SiteHelpers::activeLang('Supporting Documents', (isset($fields['supporting_documents']['language'])? $fields['supporting_documents']['language'] : array())) ;?>
                    </td>
                    <td><?php echo $row['supporting_documents'] ;?></td>
                </tr>

这是我的输出截图: I would like the pdf file or doc to be clickable

这是我设置 MySQL 的方式:

..just in case its not set correctly

我觉得它有点小,但过去一周我的眼球很痛,我想 Google 知道我的名字和我现在睡觉的地方 :)

给予的任何帮助都将在很长一段时间内消失。 谢谢

【问题讨论】:

  • 使用锚标签? &lt;a href="&lt;?php echo base_url('path/to/directory/' . $row['supporting_documents']); ?&gt;"&gt;Text to display&lt;/a&gt;
  • @DinosaurHunter 你真的拯救了我的生命、我的球(我眼中的那些)和我的一天。它就像魅力一样。祝好运。谢谢一百万。

标签: php mysql codeigniter pdf download


【解决方案1】:

根据文档: https://www.codeigniter.com/user_guide/helpers/url_helper.html#base_url

您可以像这样导入 Url Helper:

$this->load->helper('url');

然后,你可以使用

<a href="<?= base_url('path/to/directory/' . $row['supporting_documents']); ?>"> Download </a>

base_url 方法将返回您在配置文件中指定的站点基本 URL。另外,该参数会将该 URL 与您提供的字符串连接起来。这将是您文件的完整 URL。

【讨论】:

  • 感谢您的贡献。我已经在配置的 Autoload.php 中自动加载了 URL 帮助程序。效果很好。
  • 请把我的答案设为正确。需要积分来帮助更多人;)
  • 对不起@manuman94,我很高兴它起作用了,我忘了把它设置为答案。现在已经完成了。再次感谢您的帮助。它实际上在其他项目中有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
相关资源
最近更新 更多