我正在用PHP创建一个包含纯文本的文件,然后告诉浏览器使用以下代码下载它:
# Create the verification file and force-download it.
header("Content-type: text/plain");
header("Content-Disposition: attachment; filename='.ecf'"); #1
header("Pragma: no-cache");
header("Expires: 0");
echo "...";
如 #1
指定的行所示,我希望将要下载的文件命名为 .ecf
,但是我当前的代码,在下载时,它名为 ecf
(不带扩展名)。
如何告诉PHP将文件保存为 .ecf
而不是 ecf
?
注意:我遇到的问题在于下载的文件没有扩展名,而不是试图动态创建和下载文件,所以请不要将此问题标记为关于这一点的无数存在问题的重复。
修改:正如评论中指出的那样,我尝试转义点,但随后下载的文件名为 -.ecf
。
答案 0 :(得分:1)
这是浏览器级别的安全限制。以.
- “dotfiles”开头的文件 - 在OSX和Linux上具有特殊功能(默认情况下是隐藏的),因此允许您在用户的“下载”文件夹中删除一个文件可能会允许恶意行为。
https://www.w3.org/TR/html5/links.html#downloading-resources
否则,如果已知命名类型具有潜在危险(例如,它将被平台约定视为本机可执行文件,shell脚本,HTML应用程序或具有可执行宏功能的文档)然后可选择更改文件名以添加已知安全扩展名(例如“.txt”)。
答案 1 :(得分:-1)
您可以使用php创建文件。这是我用.php扩展做的尝试,它起作用了:
<?
$file = "test.php";
$content ="testing\n That is\n working";
if(!is_file($file)){
file_put_contents($file, $content);
}
?>
!在is_file之前意味着它检查文件是否没有使用名称退出然后创建它并用$ content中的内容填充它。
也许这适合你。只需将标题指向$ file?