我的文本文件包含CSV文件格式的样本,我希望我的用户可以在链接点击下载该文件。
此文件位于此文件夹结构中:
资产 - > csv->样品-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结构我只想要我在文本文件中写的文本。
请指导问题在哪里?
答案 0 :(得分:5)
您可以通过HTML5下载atrribute简单地完成此操作。只需在下载链接中添加此行。
<a href="<?php echo base_url();?>assets/csv/Sample-CSV-Format.txt" download="Sample-CSV-Format.txt"> HERE </a>
答案 1 :(得分:2)
您可以这样做,它不会重定向您,也适用于较大的文件。
在你的控制器&#34; Controller.php&#34;
function downloadFile(){
$yourFile = "Sample-CSV-Format.txt";
$file = @fopen($yourFile, "rb");
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=TheNameYouWant.txt');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($yourFile));
while (!feof($file)) {
print(@fread($file, 1024 * 8));
ob_flush();
flush();
}
}
在您的视图中&#34; view.php&#34;
<a href="<?=base_url("Controller/downloadFile")?>">Download</a>
答案 2 :(得分:0)
像这样做
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);
?>
some_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>
答案 3 :(得分:0)
我认为将下载代码更好地提供给客户端,而不是为此编写一个控制器方法。 you can use this ref