我写了一个脚本,它将数据添加到现有的csv文件中。 它也适用于其他用户,但一个用户文件不可下载只能在浏览器中打开。
写入文件时使用的标题:
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"file.csv\";" );
header("Content-Transfer-Encoding: binary");
我正在通过ajax发送一些用户选择,当它准备就绪时导航到该文件。
$.get( urlJson ,function(){
document.location.href = urlCsv;
});
我认为这是服务器问题,也许某些事情没有启用,但我不知道到底是什么。
答案 0 :(得分:1)
这应该这样做
<?php
$file = "data.csv";
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=".$file);
header("Content-Description: File Transfer");
@readfile($file);
?>
答案 1 :(得分:0)
最简单的用PHP强制下载
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=THEFILENAME");
header("Content-Type: application/THEFILETYPE");
header("Content-Transfer-Encoding: binary");
用户浏览器可能只是忽略了下载文件的请求(因为它取决于浏览器要做什么),或者它可能不知道应用程序/八位字节流是什么。
您还有其他信息吗?
CSV可以是“text /逗号分隔值,text / csv,application / csv”,因为它是你试过的MIME吗?
答案 2 :(得分:0)
与@Walkerneo所说的相似......
但是,某些版本的Internet Explorer喜欢选择对application/octet-stream
执行的操作。例如,在我的一个网站上,IE总是会在媒体播放器中打开mp3文件。解决方案是在AddType mycompany/podcast mp3
文件中添加.htaccess
。任何类似的组合类型都会强制IE明确下载。