如何在CodeIgniter中将上载的文件(PDF,DOC等)显示为可下载的链接
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在CodeIgniter中将上载的文件(PDF,DOC等)显示为可下载的链接相关的知识,希望对你有一定的参考价值。
我对CodeIgniter比较新,但我能掌握一两件事。我当前正面临一个问题,我希望管理员查看或下载用户注册时提交的上传文件(pdf和doc)。一切都运作良好,但我希望管理员下载文件,而不仅仅是看到文件名。
这是我的控制器:
<?php
class 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
我感觉它的东西很小,但过去一周我的眼球疼痛,我认为谷歌知道我的名字,我现在睡觉的地方:)
任何给予的帮助都会有很长的路要走。谢谢
根据文件: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。
以上是关于如何在CodeIgniter中将上载的文件(PDF,DOC等)显示为可下载的链接的主要内容,如果未能解决你的问题,请参考以下文章
使用 mPDF 错误在 codeigniter 3 中将 html 导出并下载为 pdf 错误:找不到类“Mpdf\Mpdf”
php CodeIgniter中的文件上载控制器。完整的教程:https://www.cloudways.com/blog/codeigniter-upload-file-image/
如何使用 mPDF 和 CodeIgniter 保存 PDF 文件