Php 如何在codeigniter中单击链接下载文本文件

Php 如何在codeigniter中单击链接下载文本文件,php,codeigniter,csv,Php,Codeigniter,Csv,我有文本文件包含的CSV文件格式的样本,我希望我的用户可以下载一个链接点击该文件 此文件位于以下文件夹结构中: 资产->csv->Sample-csv-Format.txt 这是我一直尝试的代码: <?php $file_name = "Sample-CSV-Format.txt"; // extracting the extension: $ext = substr($file_name, strpos($file_name,'.') + 1); header

我有文本文件包含的CSV文件格式的样本,我希望我的用户可以下载一个链接点击该文件

此文件位于以下文件夹结构中:

资产->csv->Sample-csv-Format.txt

这是我一直尝试的代码:

<?php
   $file_name = "Sample-CSV-Format.txt";

   // extracting the extension:
   $ext = substr($file_name, strpos($file_name,'.') + 1);

   header('Content-disposition: attachment; filename=' . $file_name);

   if (strtolower($ext) == "txt") {
       // works for txt only
       header('Content-type: text/plain');
   } else {
      // works for all 
      header('Content-type: application/' . $ext);extensions except txt
   }
   readfile($decrypted_file_path);
?>
 <p class="text-center">Download the Sample file <a href="<?php echo base_url();?>assets/csv/Sample-CSV-Format.txt">HERE</a> It has a sample of one entry</p>

下载示例文件,其中包含一个条目的示例

此代码是在页面加载时下载文件,而不是单击链接。另外,它正在下载页面的整个html结构,我只想要我在文本文件中所写的文本

请告诉我问题出在哪里?

这样说吧

someother_file.php

<?php
   $file_name = "Sample-CSV-Format.txt";

   // extracting the extension:
   $ext = substr($file_name, strpos($file_name,'.')+1);

   header('Content-disposition: attachment; filename='.$file_name);

   if(strtolower($ext) == "txt")
   {
       header('Content-type: text/plain'); // works for txt only
   }
   else
   {
      header('Content-type: application/'.$ext); // works for all extensions except txt
    }
                                           readfile($decrypted_file_path);
 ?>

一些_html _page.html

 <p class="text-center">Download the Sample file <a href="<?php echo base_url();?>/someother_file.php">HERE</a> It has a sample of one entry</p>

下载示例文件,其中包含一个条目的示例


您可以这样做,它不会重定向您,也适用于较大的文件

在控制器“controller.php”中

在您的视图“view.php”中


您只需通过HTML5下载属性即可完成此操作。只需在下载链接中添加这一行

<a href="<?php echo base_url();?>assets/csv/Sample-CSV-Format.txt" download="Sample-CSV-Format.txt"> HERE </a>

在我看来,将代码下载到客户端比编写控制器方法更好。

只需将下载代码移动到另一个功能中,并使链接指向该功能即可。此外,当您设置标题时,下载中还包括以下内容。这就是为什么您需要单独的函数(一个用于查看,另一个用于下载)。您的意思是
标记上面写的任何内容都需要进入控制器函数,并且链接路径将指向该函数?是的。这可能也会有帮助:thanx尝试一下..我可以把这个
文件的内容放在一个控制器函数中吗;controllername/fn name instedi无法打开流:HTTP请求失败!无论我尝试了什么,都找不到HTTP/1.1 404。这段代码最终帮助我修复了它。但现在文件正在无限期下载。
<a href="<?=base_url("Controller/downloadFile")?>">Download</a>
<a href="<?php echo base_url();?>assets/csv/Sample-CSV-Format.txt" download="Sample-CSV-Format.txt"> HERE </a>