我有一个用于生成.csv文件然后下载的脚本,但是我需要为用户提供“另存为”对话框,因为我想快速替换旧文件。
一个简单的例子,我下载文件“ myFile.csv”,然后编辑数据并再次下载以进行刷新,但是我需要替换该文件,然后浏览器将其下载为“ myFile(1).csv” ,因此我需要更改名称。关键是时间。
我希望对话框的“另存为”(force as)的名称相同,并替换它。
MWE:
<?php
header('Content-Type: text/csv;charset=Windows-1252');
header('Content-Disposition: inline; filename="myFile.csv";');
$delimiter = ',';
$f = fopen('php://output', 'w');
foreach ($cars as $car) {
fputcsv($f, [$car['id'],$car['model'],$car['color'],null], $delimiter);
}
fclose($f);
?>
编辑:(声明)
在Google Chrome 68上测试
我只是意识到我没有提到要点,选择下载链接时,下载会自动以myFile(1).csv 开始,这就是我要停止的内容,不想自动下载,我想要保存对话框,保存或取消。
答案 0 :(得分:1)
作者可以建议将文件另存为的文件名(通过URL,download
属性或Content-Disposition
响应标头),但是无法进行 浏览器询问用户他们要使用的文件名。
保存到默认目录或提示用户输入要保存的位置完全取决于浏览器。
想要什么是不可能的。
答案 1 :(得分:0)
然后浏览器将其下载为“ myFile(1).csv”
因为它意识到目标文件夹中已经存在一个名为myFile.csv
的文件。
我希望对话框的“另存为”(force as)的名称相同,并替换它。
那不可能。
下载文件时,您只能为用户指定文件名 ,但是在这方面您不能强加任何内容。
如果将浏览器设置为自动,将这些下载内容保存到目录中,而无需用户进行任何进一步的交互,那么根本无法进行任何操作(用户更改了设置);如果用户必须确认每次下载,则在保护文件安全之前,他们将必须手动将自动建议的文件名myFile (1).csv
更正为myFile.csv
,以便随后提示他们确认是否要替换现有文件。
答案 2 :(得分:-1)
尝试改用此标头:
内容处置:附件; filename =“ myFile.csv”
发件人:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition
内容处置
HTTP上下文中的第一个参数是内联(默认值,表明可以在网页内显示,也可以作为网页显示)或附件(指示应下载;大多数浏览器会先显示“另存为”对话框)加上文件名参数的值)。
内容处置:内联 内容处置:附件 内容处置:附件; filename =“ filename.jpg”